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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Dante Sanders - 2012. augusztus 25. - 21:07:05

Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 25. - 21:07:05
Sziasztok!Irtam egy uttisztito szkriptet aminek a lényege hogy ha el teleportálsz /tele-munka-ra és be szálsz egy utisztito autoba és be irod hogy /uttisztito akkor el kezdõdik egy munka!4 percenként add jutalmul:$4000 es 10 pontot aztán lejár a munka és ha ujbol akarsz dolgozni be irod!Figyelem:Ha kiszálsz az autobol munka közben megszünik a munkád vagy ha meghalsz!Ha nem akarsz már dolgozni és fel akarsz mondani akkor be irod hogy:/felmondok!
Parancsai:/tele-munka, /uttisztito, /felmondok
Elkeszitési idõ:30 perc
Itt a code:
 
#include <a_samp>
new uttisztito[MAX_PLAYERS];
forward idotimer(playerid);
new ido[MAX_PLAYERS];
//------------------------------------------------------------------------------
public OnFilterScriptInit()
{
    print(\"\\n--------------------------------------\");
    print(\"úttisztító munka by:[sDW]BlackJack!\");
    print(\"--------------------------------------\\n\");
    return 1;
}
public OnGameModeInit()
{
        //Utisztito kocsik
    AddStaticVehicle(574,2593.9744,2278.8171,10.5455,270.8605,1,1); // úttisztítóautó
    AddStaticVehicle(574,2593.8955,2275.5825,10.5455,270.5914,1,1); // úttisztítóautó
    AddStaticVehicle(574,2593.9182,2271.8853,10.5455,268.4151,1,1); // úttisztítóautó
    AddStaticVehicle(574,2593.7893,2268.0867,10.5455,270.0432,1,1); // úttisztítóautó
    AddStaticVehicle(574,2593.8311,2264.3550,10.5455,270.4865,1,1); // úttisztítóautó
    AddStaticVehicle(574,2612.0615,2279.2949,10.5455,89.2099,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.8406,2275.3535,10.5455,89.4762,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.5322,2270.9978,10.5455,88.9601,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.3828,2267.1921,10.5455,89.0251,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.3474,2262.9692,10.5455,88.5589,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.3857,2258.3457,10.5402,88.5281,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.3042,2254.4092,10.5384,88.7344,1,1); // úttisztítóautó
    AddStaticVehicle(574,2611.3506,2249.9414,10.5384,90.3222,1,1); // úttisztítóautó
    AddStaticVehicle(574,2581.5732,2264.2087,10.5455,91.0085,1,1); // úttisztítóautó
    AddStaticVehicle(574,2581.4775,2267.7175,10.5455,91.0778,1,1); // úttisztítóautó
    AddStaticVehicle(574,2581.4978,2271.5054,10.5455,90.1093,1,1); // úttisztítóautó
    AddStaticVehicle(574,2581.5139,2275.1284,10.5455,90.4532,1,1); // úttisztítóautó
    AddStaticVehicle(574,2581.4119,2279.1377,10.5593,90.0552,1,1); // úttisztítóautó
    return 1;
}
public OnPlayerConnect(playerid)
{
    uttisztito[playerid] = 0;
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    uttisztito[playerid] = 0;
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    uttisztito[playerid] = 0;
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp(\"/uttisztito\", cmdtext, true, 10) == 0)
    {
    if(uttisztito[playerid] ==1)
    {
    SendClientMessage(playerid,0x349fd1AA,\"Ha fel akarsz mondani akkor ird be:/felmondok!\");
    return 1;
    }
    new vehicleid;
    if(GetVehicleModel(GetPlayerVehicleID(vehicleid)))
    {
    ido[playerid] = SetTimerEx(\"idotimer\", 240000, true, \"i\", playerid);
    }
    else
    {
    SendClientMessage(playerid, 0xFF004040, \"Te nem ülsz jármuben vagy nem úttisztítóautóban ülsz!\");
    }
    uttisztito[playerid] = 1;
    new pName[30];
    new string[256];
    GetPlayerName(playerid, pName, 30);
    format(string, 280, \"*%s úttisztítónak jelenkezett![/uttisztito]\", pName);
    SendClientMessageToAll(0x349fd1AA, string);
    SendClientMessage(playerid,0x349fd1AA,\"Elkezdödöt a munkád!Ha fel akarsz mondani ird be:/felmondok!\");
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,100);
    SetPlayerSkin(playerid, 16);
    return 1;
    }
    if (strcmp(\"/felmondok\", cmdtext, true, 10) == 0)
    {
    if(uttisztito[playerid] ==1)
    {
    uttisztito[playerid] = 0;
    SendClientMessage(playerid, 0x349fd1AA,\"Sikeresen felmondtál!\");
    KillTimer(ido[playerid]);
    }
    else
    {
    SendClientMessage(playerid, 0x349fd1AA,\"Te neked nem is volt munkad!\");
    return 1;
    }
    return 1;
    }
    if (strcmp(\"/tele-munka\", cmdtext, true, 11) == 0)
    {
    SetPlayerPos(playerid,2592.4695,2278.7722,10.5455);
    SendClientMessage(playerid, 0x349fd1AA,\"El teleportáltál ide:/tele-munka\");
    return 1;
    }
    return 0;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
    if(uttisztito[playerid] ==1)
    {
    uttisztito[playerid] = 0;
    SendClientMessage(playerid, 0x349fd1AA,\"Kiszáltál az Te nem is vagy úttisztítós autoból igy megszünt a munkád!\");
    KillTimer(ido[playerid]);
    }
    return 1;
}
public idotimer(playerid)
{
new pName[MAX_PLAYER_NAME + 1];
new string[144 + 1]; //a SendClientMessage 144 karaktert tud kezelni (+1 mivel, a \'\\0\' karaktert is tárolni kell valahol)
SetPlayerScore(playerid,10);
GivePlayerMoney(playerid,4000);
SendClientMessage(playerid, 0x349fd1AA,\"Megkaptad a fizetésedet!összeg:$4000 és 10 pont!\");
KillTimer(ido[playerid]);
GetPlayerName(playerid, pName, 30);
format(string, 280, \"*%s úttisztító sikeresen elvgezte a munkáját[/uttisztito]\", pName);
SendClientMessageToAll(0x349fd1AA, string);
SendClientMessage(playerid, 0x349fd1AA,\"Ha újból munkát akarsz kezdeni akkor ird be:/uttisztito!\");
return 1;
}
//Tipp:Ez a szkript jól jön RP szeroknak!

 
Letöltése:http://www.solidfiles.com/d/19b3c1db52/
Cím: úttisztító munka![Javitva] 0.3e
Írta: Bonfini - 2012. augusztus 25. - 21:32:25
Szép munka,csak így tovább!  :thumbsup:
Cím: úttisztító munka![Javitva] 0.3e
Írta: Fl0rian - 2012. augusztus 25. - 21:38:35
Veri veri hibás..
Csak ID0-nak fog mûködni és tök mindegy hogy a tisztító kocsiba szállok be illetve ki. Mert nem ellenõrzöd.
Javítsd és jó lesz. :)
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 25. - 21:55:41
Oke!Kijavitom, es koszi mindenkinek! ;D :D
Cím: úttisztító munka![Javitva] 0.3e
Írta: Kovacs_Bela - 2012. augusztus 25. - 23:04:26
te most komolyan nem tudsz írni?
amúgy ezt másképp kéne, mert ha beszálsz, akkor négypercenként adogatja a lóvét, MIKÖZBE NEM IS MÉSZ SEHOVA... ez egy kicsit irreális szal Rp szerverekbe tuti nem lenne jó
Cím: úttisztító munka![Javitva] 0.3e
Írta: TheDon - 2012. augusztus 26. - 18:14:28
public OnPlayerDeath(playerid, killerid, reason)
{
    uttisztito[playerid] = 0;
    if(uttisztito[playerid] ==1)
    {
    uttisztito[playerid] = 0;
    return 1;
    }
        return 1;
}

 
Itt a feltétel felesleges. Egyébként a timer helyett elég lenne ha csak CP-ket raksz le. Amúgy jó lesz.
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 26. - 18:27:25
Oke!Mindent meg csinalok helyesen csak ez tegy kicsit keson csinaltam es faradt voltam!Danix te annyira nagy meno lettel miota meg kaptad a SEGITOKESZ RANGOT! VEDD ESZRE MAGADATT!
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dzsorden - 2012. augusztus 26. - 18:29:41
Idézetet írta: danix99 date=1345928666\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26865\" data-ipsquote-contentclass=\"forums_Topic
te most komolyan nem tudsz írni?
amúgy ezt másképp kéne, mert ha beszálsz, akkor négypercenként adogatja a lóvét, MIKÖZBE NEM IS MÉSZ SEHOVA... ez egy kicsit irreális szal Rp szerverekbe tuti nem lenne jó
 
Bocsánat az offolásomért, de szerinted RP-re szánta ha van benne teleport is? :facepalm:
Cím: úttisztító munka![Javitva] 0.3e
Írta: TheDon - 2012. augusztus 26. - 18:32:41
ha nem sikerül akkor szólj. egyébként ment a plusz. sok sikert a továbbiakban
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 26. - 18:44:34
Köszi a +-t!  :D
Cím: úttisztító munka![Javitva] 0.3e
Írta: JBauer - 2012. augusztus 26. - 20:14:38
@Dzsorden:
 
//Tipp:Ez a szkript jól jön RP szeroknak![/quote]
Cím: úttisztító munka![Javitva] 0.3e
Írta: Striker - 2012. augusztus 26. - 21:18:53
figyu akinek nem tetszik ne nézze, és szép munka
Cím: úttisztító munka![Javitva] 0.3e
Írta: Spedy - 2012. augusztus 27. - 08:34:29
Igen Igen. Szép munka :)
Cím: úttisztító munka![Javitva] 0.3e
Írta: Cappsy - 2012. augusztus 27. - 09:12:30
Én azt mondom hogy a srác kezdõ oké hibás persze hogy szólunk neki mert tanul belõle
Az hogy ajánlotta Rp szerverekbe az is más dolog akinek rp szervere van, az álltalába azért meg tud írni egy ilyen scriptet...
Ez csak egy ajánlás volt...Igaz hogy nem felel meg mert vannak benne teleportok de ha átalakítjátok akkor alapnak jó
Cím: úttisztító munka![Javitva] 0.3e
Írta: DrAkE - 2012. augusztus 27. - 09:57:00
Nem hiszem, hogy nekünk/nektek minden helyre azt kellene írni, hogy Szép Munka, mikor igazából nem. Sose látok egy építõ jellegû kritikát. Így szinte, nehezebben fog tanulni a gyerek/ek. Ha filterscript, akkor minek OnGameModeInitbe vannak a kocsik lespawnolva ? (szinte sose fogja lespawnolni, hacsak nem játékmód alapján indítod el).
 

uttisztito[playerid] = 0;
    if(uttisztito[playerid] ==1)
    {
    uttisztito[playerid] = 0;
    return 1;
    }

 
Felesleges, elég ha csak nullára állítod az értéket, illetve az uttisztito lehetne boolean (igaz hamis). Az idõzítõ, mint mondták, össze fog gabalyodni, és csak egy játékosnak fog lefutni (talán).
Ezeket:
 

new uttisztito[MAX_PLAYERS];
new ido;
forward idotimer();

 
Át kellene írni erre:
 

new bool:uttisztito[MAX_PLAYERS];
new ido[MAX_PLAYERS];
forward idotimer(playerid);

 
Aztán jöhet az idõzítés:
 

ido = SetTimer(\"idotimer\",240000,true);

 
Ezt le kell cserélni erre:
 

ido[playerid] = SetTimerEx(\"idotimer\", 240000, true, \"i\", playerid);

 
Végül, cseréljük le a \"idotimer\" prototípust.
 

public idotimer(playerid)
{
new pName[MAX_PLAYER_NAME + 1];
new string[144 + 1]; //a SendClientMessage 144 karaktert tud kezelni (+1 mivel, a \'\\0\' karaktert is tárolni kell valahol)
SetPlayerScore(playerid,10);
GivePlayerMoney(playerid,4000);
SendClientMessage(playerid, 0x349fd1AA,\"Megkaptad a fizetésedet!összeg:$4000 és 10 pont!\");
KillTimer(ido);
GetPlayerName(playerid, pName, 30);
format(string, 280, \"*%s úttisztító sikeresen elvgezte a munkáját[/uttisztito]\", pName);
SendClientMessageToAll(0x349fd1AA, string);
SendClientMessage(playerid, 0x349fd1AA,\"Ha újból munkát akarsz kezdeni akkor ird be:/uttisztito!\");
return 1;
}

 
A SendClientMessage 144 karaktert tud kezelni/kiírni (mint azt kommentbe is írtam). Illetve ha a játékos nevét kérdezed le, akkor mindig használd a \"MAX_PLAYER_NAME\" definíciót. Ennek az alap értéke 24.
Körülbelül ennyi, bár nem javaslom, hogy töröld az idõzítõt, inkább folytatólagosan kell megcsinálni, tehát leraksz egy random checkpointot, és abba bele kell mennie. És mint mondtam, ne csak azt mondjátok minden embernek, hogy Szép munka, meg Grat, mikor szerintem át se nézitek a fórráskódot/kódot/scriptet. Illetve építõ jellegû kritikákat is lehetne írni, mivel azokból is tanul (bár ti ezt sose csináljátok, mindig csak a \"nagyobb\" hibákat írjátok le, illetve veszítek észre).
Cím: úttisztító munka![Javitva] 0.3e
Írta: Fl0rian - 2012. augusztus 27. - 10:04:40
Idézetet írta: TayLoR date=1345923515\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26865\" data-ipsquote-contentclass=\"forums_Topic
Veri veri hibás..
Csak ID0-nak fog mûködni és tök mindegy hogy a tisztító kocsiba szállok be illetve ki. Mert nem ellenõrzöd.
Javítsd és jó lesz. :)
 
To DrAkE..
Cím: úttisztító munka![Javitva] 0.3e
Írta: DrAkE - 2012. augusztus 27. - 10:08:29
Te aztán, k*rv* sok hibát írtál le. Elmondtad, hogy nullás IDjû játékosnak fog menni (még annak se, ha NPC, vagy nincs fent). Ezen felül még csak el se mondtad, hogy kellene javítani-a, esetleg azt lekérdezni, hogy az adott típusú kocsiban van-e. Illetve a hibák mennyiségének az 1/12-ét írtad le (körülbelül), aminek még a javítását is **sztál leírni.
Ezt meg To TayLoR...
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 27. - 12:23:36
Ne vitazatok mar, aki akar segiteni hogy meg csinaljam rendesen annak itt skypeom:black.jack1999!
Cím: úttisztító munka![Javitva] 0.3e
Írta: DrAkE - 2012. augusztus 27. - 12:57:45
Idézetet írta: DrAkE date=1346054220\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26865\" data-ipsquote-contentclass=\"forums_Topic
Nem hiszem, hogy nekünk/nektek minden helyre azt kellene írni, hogy Szép Munka, mikor igazából nem. Sose látok egy építõ jellegû kritikát. Így szinte, nehezebben fog tanulni a gyerek/ek. Ha filterscript, akkor minek OnGameModeInitbe vannak a kocsik lespawnolva ? (szinte sose fogja lespawnolni, hacsak nem játékmód alapján indítod el).
 

uttisztito[playerid] = 0;
    if(uttisztito[playerid] ==1)
    {
    uttisztito[playerid] = 0;
    return 1;
    }

 
Felesleges, elég ha csak nullára állítod az értéket, illetve az uttisztito lehetne boolean (igaz hamis). Az idõzítõ, mint mondták, össze fog gabalyodni, és csak egy játékosnak fog lefutni (talán).
Ezeket:
 

new uttisztito[MAX_PLAYERS];
new ido;
forward idotimer();

 
Át kellene írni erre:
 

new bool:uttisztito[MAX_PLAYERS];
new ido[MAX_PLAYERS];
forward idotimer(playerid);

 
Aztán jöhet az idõzítés:
 

ido = SetTimer(\"idotimer\",240000,true);

 
Ezt le kell cserélni erre:
 

ido[playerid] = SetTimerEx(\"idotimer\", 240000, true, \"i\", playerid);

 
Végül, cseréljük le a \"idotimer\" prototípust.
 

public idotimer(playerid)
{
new pName[MAX_PLAYER_NAME + 1];
new string[144 + 1]; //a SendClientMessage 144 karaktert tud kezelni (+1 mivel, a \'\\0\' karaktert is tárolni kell valahol)
SetPlayerScore(playerid,10);
GivePlayerMoney(playerid,4000);
SendClientMessage(playerid, 0x349fd1AA,\"Megkaptad a fizetésedet!összeg:$4000 és 10 pont!\");
KillTimer(ido);
GetPlayerName(playerid, pName, 30);
format(string, 280, \"*%s úttisztító sikeresen elvgezte a munkáját[/uttisztito]\", pName);
SendClientMessageToAll(0x349fd1AA, string);
SendClientMessage(playerid, 0x349fd1AA,\"Ha újból munkát akarsz kezdeni akkor ird be:/uttisztito!\");
return 1;
}

 
A SendClientMessage 144 karaktert tud kezelni/kiírni (mint azt kommentbe is írtam). Illetve ha a játékos nevét kérdezed le, akkor mindig használd a \"MAX_PLAYER_NAME\" definíciót. Ennek az alap értéke 24.
Körülbelül ennyi, bár nem javaslom, hogy töröld az idõzítõt, inkább folytatólagosan kell megcsinálni, tehát leraksz egy random checkpointot, és abba bele kell mennie. És mint mondtam, ne csak azt mondjátok minden embernek, hogy Szép munka, meg Grat, mikor szerintem át se nézitek a fórráskódot/kódot/scriptet. Illetve építõ jellegû kritikákat is lehetne írni, mivel azokból is tanul (bár ti ezt sose csináljátok, mindig csak a \"nagyobb\" hibákat írjátok le, illetve veszítek észre).
 

BlackJack link=topic=31349.msg334726#msg334726 date=1346063016]
Ne vitazatok mar, aki akar segiteni hogy meg csinaljam rendesen annak itt skypeom:black.jack1999!
 
[/quote]
Látom te is csak az utolsó hozzászólást nézed.
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 27. - 13:23:30
Bocs DrAkE de kijavitottam ahogy mondtad es csakaz ID:0-nak men szoval nem tudom mi lehet a baj pls help!
Cím: úttisztító munka![Javitva] 0.3e
Írta: DrAkE - 2012. augusztus 27. - 14:08:13
BlackJack\" post=\"334772\" timestamp=\"1346066610\"]
Bocs DrAkE de kijavitottam ahogy mondtad es csakaz ID:0-nak men szoval nem tudom mi lehet a baj pls help!
 
[/quote]
Olvasd el még kétszer, amit írtam, mivel nem úgy csináltad, ahogy írtam.
Cím: úttisztító munka![Javitva] 0.3e
Írta: Dante Sanders - 2012. augusztus 27. - 14:29:24
Uj verzio - Javitva!