Szerző Téma: pickup frissítés gond:(  (Megtekintve 948 alkalommal)

pickup frissítés gond:(
« Dátum: 2013. Január 07. - 21:08:32 »
0 Show voters
Sziasztok van ez a kód:
 

public OnPlayerPickUpPickup(playerid, pickupid)
{
    new frissites[MAX_PLAYERS];
    new data[500],string[128],pickid[10],hanyadik,foglalasiar[10],foglalva[10],Float:hotelpickx[10],Float:hotelpicky[10],Float:hotelpickz[10];
    new pName[MAX_PLAYER_NAME];
    new nincs[MAX_PLAYER_NAME] = \"nincs\";
    new query[500];
    GetPlayerName(playerid, pName, sizeof(pName));
    mysql_query(\"SELECT `id`,`foglalasar`,foglalva,pickupx,pickupy,pickupz FROM hotel\");
    mysql_store_result();
    hanyadik=0;
    while(mysql_fetch_row(data)) {
    hanyadik++;
    sscanf(data, \"p<|>dds[50]fff\",pickid[hanyadik],foglalasiar[hanyadik],foglalva[hanyadik],hotelpickx[hanyadik],hotelpicky[hanyadik],hotelpickz[hanyadik]);
    if(IsPlayerInRangeOfPoint(playerid, 2.0,hotelpickx[hanyadik],hotelpicky[hanyadik],hotelpickz[hanyadik]))
          {
if(pName[playerid] == foglalva[hanyadik] )
        {
        new foglalasido[128],resultline[100],naphosz[2];
                format(query, sizeof(query), \"SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(`foglalasido` + INTERVAL `naphosz` DAY, NOW())) / 24), \' nap \', MOD(HOUR(TIMEDIFF(`foglalasido`+ INTERVAL `naphosz` DAY,NOW())), 24), \' óra és \', MINUTE(TIMEDIFF(`foglalasido`+ INTERVAL `naphosz` DAY,NOW())), \' perc van vissza \'),naphosz FROM hotel WHERE id= \'%d\'\",pickid[hanyadik]);
            mysql_query(query);
                mysql_store_result();
                mysql_fetch_row_format(resultline);
                sscanf(resultline,\"p<|>s[50]d\",foglalasido,naphosz);
                format(string,500,\"Ennyi idöd van vissza: %s Bérlés nap:  %d\",foglalasido,naphosz);
                ShowPlayerDialog(playerid,hotelszobalist, DIALOG_STYLE_LIST, string, \"Belépés\\nKijelentkezés a hotelból\\nHotelszoba itt tartózkodás meghosszabitás\", \"választ\", \"kilép\");
      hazid[playerid] = pickid[hanyadik];
      }
  }
 }
   }

 


CreatePickup(1272, 1, x,y,z);

 
hogy lehetne azt ki küszöbölni hogy ahányszor frissít akkor a dialog ne alap helyzetre álljon?
Arra gondolok
1.
2.
3.
funkció és ahányszor frissít mindig 1. dob:(
timmer se ment:(
nem tudok rá megoldást:(
segítsetek:(
elõre is köszönöm:)
« Utoljára szerkesztve: 2013. Január 07. - 21:24:01 írta kriszrap »

pickup frissítés gond:(
« Válasz #1 Dátum: 2013. Január 07. - 21:25:27 »
+1 Show voters
változók
 
new bool:Busy[MAX_PLAYERS],
pTimer[MAX_PLAYERS];

 
OnPlayerPickupDynamicPickUp(...) alá, rögtön az elsõ sorba
 
if(Busy[playerid]) return 1;
Busy[playerid] = true;
KillTimer(pTimer[playerid]);
pTimer[playerid] = SetTimerEx(\"UnBusy\", 4000, false, \"d\", playerid);

 
akárhova a scriptben, leginkább a végére
 
forward UnBusy(playerid);
public UnBusy(playerid) Busy[playerid] = false;

 
Remélem mûködik. :D
Magyarázat:
Ha a játékos beáll a pickupba, akkor a \'Busy\' változó értéke \'true\' lesz. Ha az OnPlayerPickupPickUp megint lefut, és a játékot Busy változója még mindig true, akkor 1es értékkel tér vissza, és nem csinál semmit, magyarul a Dialog ugyanúgy megmarad, nem hívódik elõ.
Ha eltelik 4 másodperc, miután beleállt, a Busy értéke automatikusan false lesz, és megint elõhívódik a Dialog.
Ezt a 4 másodpercet állíthatod, az idõzítõ idejének átírásával.
Ez kicsit \'bugos\' rendszer pickupnál, CheckPointnál teljesen hibátlanul mûködik.


Én az ilyen, hosszas dialogos cuccokat átírnám a helyedben CheckPointra, vagy DynamicArea-ra, mert úgy egyszerûbb leellenõrizni, hogy a játékos ott van-e

pickup frissítés gond:(
« Válasz #2 Dátum: 2013. Január 07. - 21:40:24 »
0 Show voters
ha szépen meg kérlek irsz erre  példát \"CheckPointra, vagy DynamicArea-ra\"?:)
ha igen akkor megköszönném .
utánna néztem egy picit megérné az pickupot erre cserélni :
CreateDynamicPickup??
miért lenne egyszerübb azonositani a hogy ott van e ??
de hajlok az egyszerûségre:)
« Utoljára szerkesztve: 2013. Január 07. - 22:53:20 írta kriszrap »

pickup frissítés gond:(
« Válasz #3 Dátum: 2013. Január 08. - 06:48:41 »
0 Show voters
CheckPointra találsz példát tutorialok között.
Streameres (Dynamic) cuccokat csak akkor használj, ha az általad használt pickupok száma meghaladja a SAMP limitjét.

pickup frissítés gond:(
« Válasz #4 Dátum: 2013. Január 08. - 08:16:02 »
0 Show voters
lathatatlan cp hogy csinaljak?:) Hogyan ellenorizzem hogy ott a jatekos vagy nem ?:)
« Utoljára szerkesztve: 2013. Január 08. - 08:25:28 írta kriszrap »

Nem elérhető shadee

  • 1073
    • Profil megtekintése
pickup frissítés gond:(
« Válasz #5 Dátum: 2013. Január 08. - 09:04:14 »
0 Show voters
Idézetet írta: kriszrap date=1357629362\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"32104\" data-ipsquote-contentclass=\"forums_Topic
lathatatlan cp hogy csinaljak?:) Hogyan ellenorizzem hogy ott a jatekos vagy nem ?:)
 
láthatatlan CP?nem kell ide,csak IsPlayerInRangeOfPoint függvény,de
másik VW-be rakod le a pickupd..
 
AddStaticPickup(model, tipus,X,Y,Z,VWID);

pickup frissítés gond:(
« Válasz #6 Dátum: 2013. Január 08. - 11:35:54 »
0 Show voters
meg mutatod mire gondolsz igy nem tudom megoldani:( ja es IsPlayerInRangeOfPoint elenoriztem nem a kodom
« Utoljára szerkesztve: 2013. Január 08. - 11:48:58 írta kriszrap »

Nem elérhető shadee

  • 1073
    • Profil megtekintése
pickup frissítés gond:(
« Válasz #7 Dátum: 2013. Január 08. - 12:08:58 »
0 Show voters
public OnFilterScriptInit()
{
    new pickup = AddStaticPickup(1239,1,0.0,0.0,0.0,4);//0.0-k helyére a poziciót,4es helyére,a VW ID-t
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == pickup)
{
    SendClientMessage(playerid,-1,\"Belementél a pickup-ba!\");
}
return 1;
}

pickup frissítés gond:(
« Válasz #8 Dátum: 2013. Január 08. - 15:52:21 »
0 Show voters

new busy[MAX_PLAYERS],
timer[MAX_PLAYERS];
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(busy[playerid]) {
    KillTimer(timer[playerid]);
    timer[playerid] = SetTimerEx(\"unbusy\", 5000, false, \"d\", playerid);
    return 1;
}
    new data[500],string[128],pickid[10],hanyadik,foglalasiar[10],foglalva[10],Float:hotelpickx[10],Float:hotelpicky[10],Float:hotelpickz[10];
    new pName[MAX_PLAYER_NAME];
    new nincs[MAX_PLAYER_NAME] = \"nincs\";
    new query[500];
    GetPlayerName(playerid, pName, sizeof(pName));
    mysql_query(\"SELECT `id`,`foglalasar`,foglalva,pickupx,pickupy,pickupz FROM hotel\");
    mysql_store_result();
    hanyadik=0;// 0 hozz add 1 et
    while(mysql_fetch_row(data))
{
       hanyadik++;
sscanf(data, \"p<|>dds[50]fff\",pickid[hanyadik],foglalasiar[hanyadik],foglalva[hanyadik],hotelpickx[hanyadik],hotelpicky[hanyadik],hotelpickz[hanyadik]);
         if(IsPlayerInRangeOfPoint(playerid, 2.0,hotelpickx[hanyadik],hotelpicky[hanyadik],hotelpickz[hanyadik]))// ez változtassam
{
    busy[playerid] = true;
      if(foglalva[hanyadik] == nincs[playerid])
             {
                format(string,500,\"Szoba szám : %d \\n Foglalási ár: %d \\n Foglalva: %s\",pickid[hanyadik],foglalasiar[hanyadik],foglalva[hanyadik]);
      ShowPlayerDialog (playerid,hotelszobafoglalas,DIALOG_STYLE_MSGBOX, \"Hotel foglalas\",string, \"foglalás\",\"kilép\");
                lvhotelid[playerid] = pickid[hanyadik];
             }
           if(pName[playerid] == foglalva[hanyadik] )
   {
      new foglalasido[128],resultline[100],naphosz[2];
                format(query, sizeof(query), \"SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(`foglalasido` + INTERVAL `naphosz` DAY, NOW())) / 24), \' nap \', MOD(HOUR(TIMEDIFF(`foglalasido`+ INTERVAL `naphosz` DAY,NOW())), 24), \' óra és \', MINUTE(TIMEDIFF(`foglalasido`+ INTERVAL `naphosz` DAY,NOW())), \' perc van vissza \'),naphosz FROM hotel WHERE id= \'%d\'\",pickid[hanyadik]);
      mysql_query(query);
                mysql_store_result();
                mysql_fetch_row_format(resultline);
                sscanf(resultline,\"p<|>s[50]d\",foglalasido,naphosz);
                format(string,500,\"Ennyi idöd van vissza: %s Bérlés nap:  %d\",foglalasido,naphosz);
                ShowPlayerDialog(playerid,hotelszobalist, DIALOG_STYLE_LIST, string, \"Belépés\\nKijelentkezés a hotelból\\nHotelszoba itt tartózkodás meghosszabitás\", \"választ\", \"kilép\");
      lvhotelid[playerid] = pickid[hanyadik];
   }
          if(pName[playerid] != foglalva[hanyadik] && foglalva[hanyadik] != nincs[playerid])
   {
                format(string,500,\"Ez a hotel szoba foglalt %s részére!!\",foglalva[hanyadik]);
                ShowPlayerDialog (playerid, foglaltszoba,DIALOG_STYLE_MSGBOX, \"Hotel  már foglalt!!\",string, \"ok\",\"\");
   }
}
}
}
forward unbusy(playerid);
public unbusy(playerid) {
KillTimer(timer[playerid];
busy[playerid] = false;
return 1;
}

 
megoldás TengeriMalac segítségével:)
« Utoljára szerkesztve: 2013. Január 11. - 15:09:09 írta kriszrap »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal