Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: LoOdaK poslato Novembar 26, 2015, 21:44:22 POSLE PODNE

Naslov: [Pomoc] /pay
Poruka od: LoOdaK poslato Novembar 26, 2015, 21:44:22 POSLE PODNE
Skripta koju koristim: Moja
Detaljan opis problema: napravio sam komandu /pay da dam pare nekom igracu i sada sam napravio da provjerava dali je igrac u blizini mene tj. onog koji hoce da da pare. Ali nesto nisam dobro napravio pa kad dodjem do igraca pise "Igrac nije u vasoj blizini" iako sam ko njega
Dio skripte: CMD:pay(playerid, params[])
{
new id,Float:Poz[3],kolicina,string[64],string2[64],string3[64],ime[MAX_PLAYER_NAME],igrac[MAX_PLAYER_NAME];
if(sscanf(params,"ui",id,kolicina)) return SCM(playerid, SIVA,"Koristi: /pay [ id ] [ kolicina ]");
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Poz[0], Poz[1], Poz[2])) return SCM(playerid, SIVA," Igrac nije u vasoj blizini");
if(PlayerInfo[playerid][pMoney] < kolicina) return SCM(playerid, SIVA,"Nemate toliko para u dzepu");
if(id == INVALID_PLAYER_ID) return SCM(playerid, SIVA,"Pogresan id");
if(kolicina > 99999) return SCM(playerid, SIVA,"Ne mozete dati vise od 99999$");
if(kolicina < 1) return SCM(playerid, SIVA,"Ne mozete dati manje od 1$");
else
{
    GetPlayerPos(id, Poz[0], Poz[1], Poz[2]);
    PlayerInfo[playerid][pMoney] -= kolicina;
    GivePlayerMoney(playerid, -kolicina);
    PlayerInfo[id][pMoney] += kolicina;
    GivePlayerMoney(id, kolicina);
    GetPlayerName(id, igrac, sizeof(igrac));
    GetPlayerName(playerid, ime, sizeof(ime));
    format(string2,sizeof(string2)," Dali ste $%d igracu %s",kolicina,igrac);
    SCM(playerid, SIVA, string2);
    format(string3,sizeof(string3)," Dobili ste $%d od igraca %s",kolicina,ime);
SCM(id, SIVA, string3);
    format(string,sizeof(string),"* %s vadi novcanik i daje nesto novca %s",ime,igrac);
    ProxDetector(30.0, playerid, string, PROX,PROX,PROX,PROX,PROX);
}
return 1;
}

Neke slike/video za lakse dobivanje pomoci(neobavezno): //
Naslov: Odg: [Pomoc] /pay
Poruka od: Bos poslato Novembar 26, 2015, 21:48:09 POSLE PODNE
dodaj ovo negdje na kraj skripte ili gdje ti stoje ostali
forward ProxDetectorS(Float:radi,playerid,targetid);
public ProxDetectorS(Float:radi, playerid, targetid)
{
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
GetPlayerPos(targetid, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

a ovo dodaj u komandu
if(!ProxDetectorS(2.0,playerid,id)) return SCM(playerid,-1,""CRVENA"[Greska]"BIJELA"Niste u blizizni tog igraca!");
Naslov: Odg: [Pomoc] /pay
Poruka od: K ROSE poslato Novembar 26, 2015, 21:50:47 POSLE PODNE
Umjesto [pawn]if(!IsPlayerInRangeOfPoint(playerid, 5.0, Poz[0], Poz[1], Poz[2])) return SCM(playerid, SIVA," Igrac nije u vasoj blizini");[/pawn]

Koristi ProxDetector i napravi ovako

[pawn]if(ProxDetectorS(5.0, playerid, giveplayerid))
{
      /// ako je u blizini njega od 5 metara sta da se desi
}
else
{
     /// ako nije da mu jebe mater onda sto to pokusava
}[/pawn]

[pawn]forward ProxDetectorS(Float:radi, playerid, targetid);[/pawn]


[pawn]public ProxDetectorS(Float:radi, playerid, targetid)
{
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
   {
      new Float:posx, Float:posy, Float:posz;
      new Float:oldposx, Float:oldposy, Float:oldposz;
      new Float:tempposx, Float:tempposy, Float:tempposz;
      GetPlayerPos(playerid, oldposx, oldposy, oldposz);
      //radi = 2.0; //Trigger Radius
      GetPlayerPos(targetid, posx, posy, posz);
      tempposx = (oldposx -posx);
      tempposy = (oldposy -posy);
      tempposz = (oldposz -posz);
      //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
      if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
      {
         return 1;
      }
   }
   return 0;
}[/pawn]
Naslov: Odg: [Pomoc] /pay
Poruka od: LoOdaK poslato Novembar 26, 2015, 21:59:16 POSLE PODNE
Hvala ljudi resio sam moze kljucic  8)