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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: aprila44 - 2012. július 17. - 11:37:47

Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 17. - 11:37:47
Kellene három munka, egy rendõrös, egy mentõs, és egy tûzoltós.
A munkából lehessen belépni és kilépni.
Mindegyik munka rendelkezzen saját munkachat-el. PL:.aki nem dolgozik az ne lássa egyik munka chat-et se, és aki pl:. rendörként dolgozik az ne lássa a többi munkachat-et.
A rendõr tûzoltót mentõst lehessen hívni, de nem úgy, hogy kirak egy chekpointott(chekpoint ne legyen benne!), hogy oda menjen, hanem:
/rendorhiv indok (oda beír valami szöveget, hogy ls parknál lelõttek vagy stb..)
Mindegyik munka 20 percenként kapjon 20 ezret.
A mentõs ha a játékos közelében van tudjon éltetett tölteni.
Cím: Több munka saját chat-el
Írta: Nátha - 2012. július 17. - 12:21:35
Ezt nem a \"Szkript kérésekhez\" kellett volna írnod ?  :D
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 17. - 12:44:22
Most már jó helyre rakta valaki.
Remélem segít valaki a megvalósításában.
Cím: Több munka saját chat-el
Írta: Kovacs_Bela - 2012. július 18. - 16:33:41
,,A munka csupán egy változó...\"
                                                       / Me /



enum m {
    rendor,
    mento,
    tuzolto,
};
new munka[MAX_PLAYERS][munka];

 


CMD:rendor(playerid,params[])
{
    if(munka[playerid][rendor] == 1) return 0;
    munka[playerid][rendor] = 1;
    SendClientMessageToAll(-1,\"valaki rendõrlett\");
    munka[playerid][mento] = 0;
    munka[playerid][tuzolto] = 0;
    return 1;
}
CMD:mento(playerid,params[])
{
    if(munka[playerid][mento] == 1) return 0;
    munka[playerid][mento] = 1;
    SendClientMessageToAll(-1,\"valaki mentõslett\");
    munka[playerid][rendor] = 0;
    munka[playerid][tuzolto] = 0;
    return 1;
}
CMD:tuzolto(playerid,params[])
{
    if(munka[playerid][tuzolto] == 1) return 0;
    munka[playerid][tuzolto] = 1;
    SendClientMessageToAll(-1,\"valaki tûzoltólett\");
    munka[playerid][mento] = 0;
    munka[playerid][rendor] = 0;
    return 1;
}
CMD:radio(playerid,params[])
{
    new text[128],name[24],str[128];
    if(sscanf(params,\"s[128]\",text)) return SendClientMessage(playerid,-1,\"/radio [üzi]\");
    if(munka[playerid][rendor] == 1) { for(new i; i < MAX_PLAYERS; i++) { if(munka[rendor]) {
    GetPlayerName(playerid,name,24);format(str,128,\"RendõrCHAT %s: %s\",name,text); SendClientMessage(i,0x00ff00ff,str); } } }
    if(munka[playerid][mento] == 1) { for(new i; i < MAX_PLAYERS; i++) { if(munka[mento]) {
    GetPlayerName(playerid,name,24);format(str,128,\"MentõsCHAT %s: %s\",name,text); SendClientMessage(i,0x00ff00ff,str); } } }
    if(munka[playerid][tuzolto] == 1) { for(new i; i < MAX_PLAYERS; i++) { if(munka[tuzolto]) {
    GetPlayerName(playerid,name,24);format(str,128,\"TûzoltóCHAT %s: %s\",name,text); SendClientMessage(i,0x00ff00ff,str); } } }
    if(munka[playerid][rendor] == 0 || munka[playerid][mento] == 0 || munka[playerid][tuzolto] == 0) return SendClientMessage(playerid,-1,\"Hova akarsz írni???\");
    return 1;
}

 
e: bocsi lusta vagyok most igényes munkát csinálni de ha pár dolgot átírsz akkor máris jó..
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 18. - 17:03:37
Köszönöm, ez is már nagy segítség számomra.
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 19. - 19:28:00

enum m {
    rendor,
    mento,
    tuzolto,
};
new munka[MAX_PLAYERS][munka];

 
Helyett
 

enum munka {
    rendor,
    mento,
    tuzolto,
};
new MunkaInfo[MAX_PLAYERS][munka];

 


Megírtam egyszerûbben, átláthatóbban(legalábbis szerintem), fizetéssel.
 


#include a_samp
#include zcmd
#include sscanf
#include foreach
#define rendor 1
#define mentos 2
#define tuzolto 3
new Munka[MAX_PLAYERS];
forward fizetes(playerid);
public OnPlayerConnect(playerid)
{
SetTimerEx(\"fizetes\", 20*60000, true, \"i\", playerid);
return 1;
}
CMD:rendor(playerid)
{
new string[128], nev[MAX_PLAYER_NAME];
format(string, sizeof(string), \"%s rendõr lett!\", nev);
Munka[playerid] = rendor;
SendClientMessageToAll(-1, string);
return 1;
}
CMD:mentos(playerid)
{
new string[128], nev[MAX_PLAYER_NAME];
format(string, sizeof(string), \"%s mentõs lett!\", nev);
Munka[playerid] = mentos;
SendClientMessageToAll(-1, string);
return 1;
}
CMD:tuzoltos(playerid)
{
new string[128], nev[MAX_PLAYER_NAME];
format(string, sizeof(string), \"%s tûzoltós lett!\", nev);
Munka[playerid] = tuzolto;
SendClientMessageToAll(-1, string);
return 1;
}
CMD:felmond(playerid)
{
new string[128], nev[MAX_PLAYER_NAME];
format(string, sizeof(string), \"%s felmondott!\", nev);
Munka[playerid] = 0;
SendClientMessageToAll(-1, string);
return 1;
}
CMD:munkahelp(playerid)
{
SendClientMessage(playerid, -1, \"/rendor /mentos /tuzoltos | Felmondás: /felmond\");
return 1;
}
CMD:radio(playerid, params[])
{
new string[128], nev[MAX_PLAYER_NAME], szoveg[128];
if(sscanf(params, \"s[128]\", szoveg)) return SendClientMessage(playerid, -1, \"Használat: /radio [szöveg]\");
GetPlayerName(playerid, nev, sizeof(nev));
if(Munka[playerid] == rendor)
{
format(string, sizeof(string), \"Rendõr, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == rendor) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == mentos)
{
format(string, sizeof(string), \"Mentõs, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == mentos) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == tuzolto)
{
   format(string, sizeof(string), \"Tûzoltós, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == tuzolto) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == 0) return SendClientMessage(playerid, -1, \"Nincs munkád! Ha szeretnél /munkahelp!\");
return 1;
}
public fizetes(playerid)
{
if(Munka[playerid] == 0) return SendClientMessage(playerid, -1, \"Ha dolgozni szeretnél nézd meg a munkákat. /munkahelp\");
GivePlayerMoney(playerid, 20000);
SendClientMessage(playerid, -1, \"Megkaptad a fizetésedet! $20000\");
return 1;
}
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 19. - 21:02:18
Kimaradt a legfontosabb, hogy amikor munka közben, meghal a rendõr, akkor halál után a rendõrállomásra rakná?
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 19. - 21:10:26
Rendõrállomás koordinátái?
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 19. - 21:53:44
2318.6741,2450.1377,10.8203
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 19. - 22:40:42

public OnPlayerSpawn(playerid)
{
if(Munka[playerid] == rendor) SetPlayerPos(playerid, 2318.6741,2450.1377,10.8203); // Rendõr spawn
return 1;
}
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 20. - 09:15:34
Azt hogyan lehet megoldani, hogy amikor kilép a munkából, akkor ne a \"munka\" skin legyen rajta, hanem az ami a munkába lépés elõtt volt?
(remélem érted a kérdést)
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 20. - 10:14:59

#include a_samp
#include zcmd
#include sscanf
#include foreach
#define rendor 1
#define mentos 2
#define tuzolto 3
new Munka[MAX_PLAYERS];
new Simaskin[MAX_PLAYERS];
forward fizetes(playerid);
public OnPlayerConnect(playerid)
{
SetTimerEx(\"fizetes\", 20*60000, true, \"i\", playerid);
return 1;
}
CMD:rendor(playerid)
{
new string[128], nev[MAX_PLAYER_NAME];
Simaskin[playerid] = GetPlayerSkin(playerid);
format(string, sizeof(string), \"%s rendõr lett!\", nev);
Munka[playerid] = rendor;
SendClientMessageToAll(-1, string);
SetPlayerSkin(playerid, 0); // Munkaskin
return 1;
}
CMD:mentos(playerid)
{
if(Munka[playerid] > 0) return SendClientMessage(playerid, -1, \"Már dolgozol, elõbb mondj fel!\");
new string[128], nev[MAX_PLAYER_NAME];
Simaskin[playerid] = GetPlayerSkin(playerid);
format(string, sizeof(string), \"%s mentõs lett!\", nev);
Munka[playerid] = mentos;
SendClientMessageToAll(-1, string);
SetPlayerSkin(playerid, 0); // Munkaskin
return 1;
}
CMD:tuzoltos(playerid)
{
if(Munka[playerid] > 0) return SendClientMessage(playerid, -1, \"Már dolgozol, elõbb mondj fel!\");
new string[128], nev[MAX_PLAYER_NAME];
Simaskin[playerid] = GetPlayerSkin(playerid);
format(string, sizeof(string), \"%s tûzoltós lett!\", nev);
Munka[playerid] = tuzolto;
SendClientMessageToAll(-1, string);
SetPlayerSkin(playerid, 0); // Munkaskin
return 1;
}
CMD:felmond(playerid)
{
if(Munka[playerid] > 0) return SendClientMessage(playerid, -1, \"Már dolgozol, elõbb mondj fel!\");
new string[128], nev[MAX_PLAYER_NAME];
Simaskin[playerid] = GetPlayerSkin(playerid);
format(string, sizeof(string), \"%s felmondott!\", nev);
Munka[playerid] = 0;
SendClientMessageToAll(-1, string);
SetPlayerSkin(playerid, Simaskin[playerid]); // Alap skin
return 1;
}
CMD:munkahelp(playerid)
{
SendClientMessage(playerid, -1, \"/rendor /mentos /tuzoltos | Felmondás: /felmond\");
return 1;
}
CMD:radio(playerid, params[])
{
new string[128], nev[MAX_PLAYER_NAME], szoveg[128];
if(sscanf(params, \"s[128]\", szoveg)) return SendClientMessage(playerid, -1, \"Használat: /radio [szöveg]\");
GetPlayerName(playerid, nev, sizeof(nev));
if(Munka[playerid] == rendor)
{
format(string, sizeof(string), \"Rendõr, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == rendor) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == mentos)
{
format(string, sizeof(string), \"Mentõs, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == mentos) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == tuzolto)
{
   format(string, sizeof(string), \"Tûzoltós, %s mondja: %s\", nev, szoveg);
foreach(Player, i)
{
   if(Munka == tuzolto) return SendClientMessage(i, -1, string);
}
}
if(Munka[playerid] == 0) return SendClientMessage(playerid, -1, \"Nincs munkád! Ha szeretnél /munkahelp!\");
return 1;
}
public fizetes(playerid)
{
if(Munka[playerid] == 0) return SendClientMessage(playerid, -1, \"Ha dolgozni szeretnél nézd meg a munkákat. /munkahelp\");
GivePlayerMoney(playerid, 20000);
SendClientMessage(playerid, -1, \"Megkaptad a fizetésedet! $20000\");
return 1;
}
public OnPlayerSpawn(playerid)
{
if(Munka[playerid] == rendor) SetPlayerPos(playerid, 2318.6741,2450.1377,10.8203); // Rendõr spawn
return 1;
}
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 20. - 15:50:30
Minden rendben megy rajta, csak az a gond, hogy halál után nem rak a rendõrálláshoz.
Az lehet, hogy a gamemod miatt van ez? (átalakított lvdm-et használok)
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 20. - 16:26:34
Az meg lehet, hogy túl hamar fut le a SetPlayerPos. Tehát még a játékos lespawnolása elõtt lefut = nem ér semmit.
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 20. - 16:43:41
És ezt hogyan lehetne kijavítani?
Cím: Több munka saját chat-el
Írta: CANNONN - 2012. július 20. - 16:48:57
Háát, próbáld meg így.
 

forward munkabarakas(playerid);
public OnPlayerSpawn(playerid)
{
if(Munka[playerid] == rendor) SetTimerEx(\"munkabarakas\", 2000, false, \"i\", playerid);
return 1;
}
public munkabarakas(playerid)
{
SetPlayerPos(playerid, 2318.6741,2450.1377,10.8203); // Rendõr spawn
return 1;
}
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 20. - 18:57:02
Most már jó.
Már csak azt kéne megoldani, hogy ha mentõs egy a játékos közelében van tudja annak az életét tölteni.
Cím: Több munka saját chat-el
Írta: Kovacs_Bela - 2012. július 21. - 14:40:15

new n[24],pos[3];
CMD:eletad(playerid,params[])
{
    new str[128];
    foreach(Player,i) {
    GetPlayerPos(i,pos[1],pos[2],pos[3]);
    GetPlayerName(i,n,24);
    if(IsPlayerInRangeOfPoint(playerid,pos[1],pos[2],pos[3],2.0)) {
    format(str,128,\"Biztosan fel akarod tölteni %s[%d] életét?\",n,i);
    ShowPlayerDialog(playerid,1163,DIALOG_STYLE_MSGBOX,\"\",str,\"Feltölt!\",\"Mégse\");
    return 1;
}
new Timer[MAX_PLAYERS];
public timeer(playerid);
public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
{
    if(dialogid == 1163)
    { foreach(Player,i) { if(IsPlayerInRangeOfPoint(playerid,pos[1],pos[2],pos[3],2.0)) {
        if(response)  return Timer[playerid] = SetTimerEx(\"timeer\",500,true,\"d\",i);
    }}}
    return 1;
}
public timeer(playerid);
{
    SetPlayerHealth(playerid,GetPlayerHealth(playerid) + 2);
    if(GetPlayerHealth(playerid) > 100) return KillTimer(Timer), SetPlayerHealth(playerid,100);
    return 1;
}

 
// lehet hogy rossz, rögtönzött meg nem is tudom most ellenõrizni..
Cím: Több munka saját chat-el
Írta: aprila44 - 2012. július 21. - 19:36:14
Van benne pár hiba:
-a munkachat-nél alapból ha beírom /radio valamilyen szöveg  kiírja, hogy /radio [szöveg], nem gond kijavítottam, és utána csak egy szót ír be pl:. /radio egy ketto, akkor már a \"ketto\" szót nem írja ki.
Röviden a hiba az, hogy egy szónál müködik a chat de több szónál már nem.
-a nevet rosszul kéri le, ki vállalt munkát pl:. \"(nemírja ki az id-t) rendõr lett!\"