GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: bencarter007 - 2014. július 23. - 21:50:05

Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: bencarter007 - 2014. július 23. - 21:50:05
Hali!
hogy lehet kiszámolni a legtöbb ponttal rendelkezõt?
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: Asdelon - 2014. július 23. - 21:59:18
Mit használsz?
Mysql,dini, egyéb?
 Mysql-el a lekérdezést pl. így lehet írni:
 
SELECT XY FROM TABLE WHERE ki = kivel LIMIT hány darab ASC(növekvõ) | DESC(csökkenõ)

 
[mod]Kihelyeztem a

taget.[/mod]
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: bencarter007 - 2014. július 24. - 01:47:30
Sima pawno, semmi más
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: [PRO]AcErBiS_V8 - 2014. július 24. - 11:13:53
Nem a program nevét kérdezte, hanem a mentési formát mivel mentesz? Dini, MySql vagy valami más? Mivel a mentési hely adatbázisából kell lekérdezni az adatokat.
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: draco_blue - 2014. július 24. - 11:17:10
AcErBiS_V8\" post=\"507465\" timestamp=\"1406193233\"]
Nem a program nevét kérdezte, hanem a mentési formát mivel mentesz? Dini, MySql vagy valami más? Mivel a mentési hely adatbázisából kell lekérdezni az adatokat.
 
[/quote]
felesleges a mentési cucc, mivel egy egyszerû GetPlayerScore-ra gondol.....
viszont a megoldás már bonyolultabb, mert többb külön változó kell, magyarán nem egy egyszerû code amit te most kérsz. xd kivéve, ha nincs rá valami kis inc...de ennek hiányában idõt igényel ezt megírni.
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: Erik3333 - 2014. július 24. - 11:37:53
Ilyenre gondoltál?
 
new legtobbPont,legtobbPontPID,pont;
for(new id = 0; id < MAX_PLAYERS; id++)
{
if(!IsPlayerConnected(id)) continue;
pont = GetPlayerScore(id);
if(pont > legtobbPont)
{
legtobbPont = pont;
legtobbPontPID = id;
}
}
new string[64];
format(string, sizeof(string), \"Legnagyobb pontú játékos: %d | Pontjai: %d db\", legtobbPontPID, legtobbPont);
SendClientMessage(playerid, -1, string);
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: draco_blue - 2014. július 24. - 11:47:02
Idézetet írta: Gun22 date=1406194673\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49631\" data-ipsquote-contentclass=\"forums_Topic
Ilyenre gondoltál?
 
new legtobbPont,legtobbPontPID,pont;
for(new id = 0; id < MAX_PLAYERS; id++)
{
if(!IsPlayerConnected(id)) continue;
pont = GetPlayerScore(id);
if(pont > legtobbPont)
{
legtobbPont = pont;
legtobbPontPID = id;
}
}
new string[64];
format(string, sizeof(string), \"Legnagyobb pontú játékos: %d | Pontjai: %d db\", legtobbPontPID, legtobbPont);
SendClientMessage(playerid, -1, string);

 

ezt tesztelted, és mûködik, vagy csak szimplán megírtad? xd mert szerintem ez így bugolni fog, ezért is nem próbáltam így megírni neki...
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: Szasza - 2014. július 27. - 10:18:55
Idézetet írta: Gun22 date=1406194673\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49631\" data-ipsquote-contentclass=\"forums_Topic
Ilyenre gondoltál?
 
new legtobbPont,legtobbPontPID,pont;
for(new id = 0; id < MAX_PLAYERS; id++)
{
if(!IsPlayerConnected(id)) continue;
pont = GetPlayerScore(id);
if(pont > legtobbPont)
{
legtobbPont = pont;
legtobbPontPID = id;
}
}
new string[64];
format(string, sizeof(string), \"Legnagyobb pontú játékos: %d | Pontjai: %d db\", legtobbPontPID, legtobbPont);
SendClientMessage(playerid, -1, string);

 

IDe : format(string, sizeof(string), \"Legnagyobb pontú játékos: %d | Pontjai: %d db\", legtobbPontPID, legtobbPont);
Nem inkább ez kellet volna? format(string, sizeof(string), \"Legnagyobb pontú játékos ID-je: %d | Pontjai: %d db\", legtobbPontPID, legtobbPont);

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. Július 27. 10:23:28[/time] )

[pawn] if(pont > legtobbPont)
 {
                legtobbPont = pont;
                legtobbPontPID = id;
 }[/pawn]
WTF???????? ez 100 hogy nem mûködik
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: BackUP - 2014. július 27. - 13:07:44
Volt egy segítségkérés, ahol szavazós szkriptet kértek. Arra a kérésre írtam én egy szkriptet, amiben nagyon egyszerûen megoldottam a legtöbb szavazat kiszámítását.
Szerintem ezt feltudod használni, semmi inc nem szükséges.
for(new i; i < sizeof(szavazatok); i++)
{   
      if(szavazatok > nyertespalya) nyertespalya = i;
}
majd:
if(nyertespalya == 1)
{
       SendClientMessageToAll(-1,\"Az 1. pálya nyert\");
}
Nemtudom így mennyire érthetõ, neked itt van a teljes szkript is, hátha feltudod használni:



#include <a_samp>
#include <zcmd>
#define SZAVAZAS_IDO 15 // ide írd, hogy automatikusan hány percenként induljon az új szavazás.
#define SZAVAZO_IDO 3 // ide írd, hogy hány másodpercig tartson a szavazás. (( ha letelt, utána vált pályát ))
#define DIALOG_SZAVAZAS 53 // ide írd a dialog ID-jét, hogy a módban lévõ dialogokkal ne keveredjen össze.
#define SZAVAZDIALOG ShowPlayerDialog(i, DIALOG_SZAVAZAS, DIALOG_STYLE_LIST, \"Szavazás\",\"Pálya1\\nPálya2\\nPálya3\",\"Szavaz\",\"\") // elég itt átírni a szavazós dialogot!
forward szavazas();
forward SzavazoIdo();
new szavazastimer;
new bool:szavazhat[MAX_PLAYERS];
new szavazatok[3]; //  a négyzetes zárójelbe akkora számot írj, amennyi pályára lehet szavazn
new nyertespalya = 0;
public szavazas()
{
for(new i;i < MAX_PLAYERS; i++)
{
    szavazhat = true;
    SZAVAZDIALOG;
}
KillTimer(szavazastimer);
SetTimer(\"SzavazoIdo\",1000*SZAVAZO_IDO,false);
ErtekReset();
}
public SzavazoIdo()
{
SendClientMessageToAll(-1,\"[szavazás] a szavazás ideje letelt!\");
szavazastimer = SetTimer(\"szavazas\",1000*60*SZAVAZAS_IDO,false);
new str1[15];
new str2[15];
new str3[15];
format(str1,sizeof(str1),\"* Pálya1: %d\",szavazatok[0]);
format(str2,sizeof(str2),\"* Pálya2: %d\",szavazatok[1]);
format(str3,sizeof(str3),\"* Pálya3: %d\",szavazatok[2]);
SendClientMessageToAll(-1, \" ------  SZAVAZATOK ------\");
SendClientMessageToAll(-1, str1);
SendClientMessageToAll(-1, str2);
SendClientMessageToAll(-1, str3);
SendClientMessageToAll(-1, \" \");
for(new i; i < sizeof(szavazatok); i++){    if(szavazatok > nyertespalya) nyertespalya = i;}
for(new ix; ix < MAX_PLAYERS; ix++)
{
szavazhat[ix] = false;
}
if(nyertespalya == szavazatok[0])
{
    SendClientMessageToAll(-1,\"Az 1. pálya nyert\");
    // ha az 1. pálya a nyertes, akkor ez történjen
}
else if(nyertespalya == szavazatok[1])
{
    SendClientMessageToAll(-1,\"A 2. pálya nyert\");
    // ha a 2. pálya a nyertes, akkor ez történjen
}
else if(nyertespalya == szavazatok[2])
{
    SendClientMessageToAll(-1,\"A 3. pálya nyert\");
    // ha a 3. pálya a nyertes, akkor ez történjen
}
}
public OnFilterScriptInit()
{
print(\" * Szavazás rendszer betöltve!\");
szavazastimer = SetTimer(\"szavazas\",1000*60*SZAVAZAS_IDO,false);
return 1;
}
CMD:szavazas(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
KillTimer(szavazastimer);
for(new i;i < MAX_PLAYERS; i++)
{
    SZAVAZDIALOG;
    szavazhat = true;
}
SetTimer(\"SzavazoIdo\",1000*SZAVAZO_IDO,false);
ErtekReset();
return 1;
}
public OnFilterScriptExit(){return 1;}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
    case DIALOG_SZAVAZAS:
    {
        new name[30];
        GetPlayerName(playerid, name, 40);
        if(listitem == 0)
   {
       if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
       new string[128];
       format(string, sizeof(string), \"[szavazás] %s a(z) 1. pályára szavazott!\",name);
       SendClientMessageToAll(-1,string);
       szavazatok[0] ++;
   }
   if(listitem == 1)
   {
       if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
       new string[128];
       format(string, sizeof(string), \"[szavazás] %s a(z) 2. pályára szavazott!\",name);
       SendClientMessageToAll(-1,string);
       szavazatok[1] ++;
   }
   if(listitem == 2)
   {
       if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
       new string[128];
       format(string, sizeof(string), \"[szavazás] %s a(z) 3. pályára szavazott!\",name);
       SendClientMessageToAll(-1,string);
       szavazatok[2] ++;
   }
    }
}
return 1;
}
stock ErtekReset()
{
szavazatok[0] = 0;
szavazatok[1] = 0;
szavazatok[2] = 0; // addig folytasd ameddig el nem érsz a szavazatok változó maximális értékéig! (( Figyelem! ha a változónak pl: 5-ös értéke van, akkor 0-4ig számozható! ))

 
}
 
Picit gondolkodtam, és bár szerintem ez nem mûködik neked ilyen módon lehetne megoldani:
 
#include <a_samp>
#define PONTPERC 10 // Ennyi percenként ellenõriz
new Pontok[MAX_PLAYERS];
 
public OnFilterScriptInit()
{
SetTimer(\"KinekVanLegtobbPontja\",1000*60*PONTPERC,true);
return 1;
}
forward KinekVanLegtobbPontja();
public KinekVanLegtobbPontja()
{
//new kinekmennyi[MAX_PLAYERS];
new legtobbpontju;
new name[30];
new str[90];
for(new ix; ix < MAX_PLAYERS; ix++)
{
    GetPlayerScore(ix, Pontok[ix]);
}
    for(new i; i < sizeof(Pontok); i++)
{
if(Pontok > MAX_PLAYERS) legtobbpontju = i;
}
GetPlayerName(legtobbpontju, name, 30);
format(str,sizeof(str),\"A legtöbb pontja %s-nak/nek van!\",name);
SendClientMessageToAll(-1,str);
}

 
Mégegyszer mondom, csak 5perc alatt megírtam, nem teszteltem és nem is mûködik 90%ban.
Remélem tudsz vele kezdeni valamit.
UI.: Nagyon szar ez az új \'Code\' tag stílus vagy mi ez.. Ha kijelölöd, vagy kimásolod látszik az is amit így nem jelenít meg.
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: Szasza - 2014. július 27. - 14:00:35
Idézetet írta: BackUP date=1406459264\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49631\" data-ipsquote-contentclass=\"forums_Topic
UI.: Nagyon sz*r ez az új \'Code\' tag stílus vagy mi ez.. Ha kijelölöd, vagy kimásolod látszik az is amit így nem jelenít meg.
 
Tényleg szar... de nem nem jeleníti meg hanem fehérrel jeleníti meg... és beleolvad a háttérbe :/
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: BackUP - 2014. július 27. - 14:30:18
De akkor a sötétebb árnyalaton, ami szinte szürke miért úgyan olyan mint a világos fehéren? Ott ezesetben látszódnia kellene, vagy csak én vagyok vak :D
Mindegy, attól még nem változott semmi.
Cím: Legtöbb ponttal rendelkezõ játékos kiszámítása
Írta: bencarter007 - 2014. július 27. - 16:52:05
elég az offokból, mindegy már a cucc, azért köszi!