hmm... du meinst das dann das gegnerische team auf dem Radar keine Gegener und so mehr sieht??? und der Saboteur bekommt geld?
Beiträge von BMGP
-
-
Hi!
Hab ne Frage...
Also ich habe einen TDM server gemacht und man kann sehr viel mit Geld kaufen/aktivieren... (Spezialwaffen)
Es ist USA vs. IRAK(Ach ne, hat ja noch keeiner xDD) und es spielt in dedr country gegen nördlich von LS.
Hat jemand eine Idee, womit man auf dem Server außer andere zu killen noch Geld verdienen könnte???
Ich dachte schon an Transporter oder so für soldaten aber ich glaub das geht nicht gut/wirkt nicht gut bzw wüsste ich es nicht wie ich es umsetzen sollte...Also wüsste jemand eine coole Methode?? (Sollte schon zum "Krieg" passen - also keine Taxi fahrer xDD
-
Hi!
Ich möchte diese x[playerid] = yz wenn man sich registriert(Ich verwende GAdmin(Da ist ein Register Login System dabei) das das immer wenn man das spiel verlasst gespeichert wird und wenn man wieder connectet das es dann eben wieder da ist^^
Es soll nämlich ein Art Levelsystem entstehen(Gehts leichter zum machen? Bitte sagen xD), und da soll ja nicht immer jeder von vorne beginnenHILFE! PLS! Kann doch net so schwer sein!(-> Ich würds ja machen aber ich versteh nicht mal das SPeichern + Lesen Tutorial!!!)
-
Also habe gerade ein Blade Lawrider gemacht(per CreateVehicle) und habe per AddVehicleComponent halt aufgemotzt.
Nur ich hab beim SAMP Wiki einfach nicht die Lackierungen(Flammen etc.) gefunden...
Geht das überhaubt?PLS HELP!!!
MfG. BMGP(Habe 0.3a)
-
ALso bekomme jetzt zwei Fehler beim Filterscript(einmal Error expected token + einmal Warning symbol is never used(immer letzte(leere) Zeile als fehlerzeile angegeben...))
Das ist das Filterscript:
#include <a_samp>//----------------------------------------------------------------
#define COLOR_RED 0xFF0000AA
#define COLOR_GREEN 0x33AA33AA33AAnew weedobject;
new WEEDGramm[MAX_PLAYERS];
new Float:XWeed, Float:YWeed, Float:ZWeed;
new WEEDgepflanzt[MAX_PLAYERS] = 0;
new WEEDgegossen[MAX_PLAYERS] = 0;
new WEEDhaben[MAX_PLAYERS] = 0;enum AcceptInfo
{
gewicht,
preis,
dealer
}new Accept[MAX_PLAYERS][AcceptInfo];
new WEEDgramm[MAX_PLAYERS];//----------------------------------------------------------------
#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n-------------------------------------------------------");
print(" Weed - System by BMGP alias NWC Daniel...... 100% loaded");
print("-------------------------------------------------------\n");
return 1;
}public OnFilterScriptExit()
{
return 1;
}strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}public OnPlayerCommandText(playerid, cmdtext[])
{new cmd[128];
new tmp[128];
new giveplayerid, moneys, idx;//--------------------------------------------------------------------
if(!strcmp(cmd, "/weedpflanzen", true))
{
if(WEEDgepflanzt[playerid] == 0)
{
GetPlayerPos(playerid,XWeed,YWeed,ZWeed);
weedobject = CreateObject(823, XWeed, YWeed, ZWeed - 3, 0, 0, 0);
SendClientMessage(playerid,COLOR_GREEN,"Du hast Weed erfolgreich angebaut!");
WEEDgepflanzt[playerid] = 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du hast schon Weed angebaut.");
}
return 1;
}
if(!strcmp(cmd, "/weedgiessen", true))
{
if(WEEDgepflanzt[playerid] == 1)
{
WEEDgegossen[playerid] = 1;
MoveObject(weedobject, XWeed, YWeed, ZWeed , 0.05);
SendClientMessage(playerid,COLOR_GREEN,"Du hast das Weed erfolgreich gegossen. Es wächst nun.");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst zuerst WeedSamen pflanzen um das Weed zu giessen!");
}
return 1;
}
if(!strcmp(cmd, "/weedernten", true))
{
if(WEEDgepflanzt[playerid] == 1)
{
if(WEEDgegossen[playerid] == 1)
{
WEEDGramm[playerid]++;
SendClientMessage(playerid,COLOR_GREEN,"Weed erfolgreich geerntet!");
WEEDgepflanzt[playerid] = 0;
DestroyObject(weedobject);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst das Weed zuerst giessen damit es wächst!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst das Weed zuerst pflanzen und dann giessen!");
}return 1;
}
if(!strcmp(cmd,"/accept",true))
{
if(Accept[playerid][gewicht] <= 0 || Accept[playerid][preis] <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Angebot!");
if(GetPlayerMoney(playerid) < Accept[playerid][preis]) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Geld dafür im Moment!");
WEEDgramm[playerid] += Accept[playerid][gewicht];
GivePlayerMoney(playerid, -Accept[playerid][preis]);
SendClientMessage(playerid,COLOR_GREEN,"*** Weed angenommen. Viel Spaß damit !");
GivePlayerMoney(Accept[playerid][dealer],Accept[playerid][preis]);
Accept[playerid][gewicht] = 0;
Accept[playerid][preis] = 0;
Accept[playerid][dealer] = 0;
// Was auch immer
return 1;
}
if(!strcmp(cmd,"/weedsell",true))
{
if(WEEDgramm[playerid] == 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Weed (0 Gramm)");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,COLOR_GREEN,"*** Angegebener User nicht online!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
new gramm = strval(tmp);
if(gramm <= 0 || gramm >= 1000) return SendClientMessage(playerid,COLOR_GREEN,"*** Gramm muss zwischen 1 und 999 sein!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
moneys = strval(tmp);
if(moneys <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Preis muss über 0 sein!");
SendClientMessage(playerid,COLOR_GREEN,"*** Weedangebot abgegeben!");
Accept[giveplayerid][gewicht] = gramm;
Accept[giveplayerid][preis] = moneys;
Accept[giveplayerid][dealer] = playerid;
return 1;
}
//--------------------------------------------------------------------
return 0;
}stock ReturnUser(strings[])
{
new count = 0;
new len = strlen(strings);
if(len > 3)
{
for(new i = 0; i < MAX_PLAYERS;i++)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(i,name,sizeof(name));
if(!strcmp(name,strings,false,MAX_PLAYER_NAME))
{
return i;
}
else
{
count = 1;
}
}
}
else
{
return strval(strings);
}
return (count == 1) ? (INVALID_PLAYER_ID) : (strval(strings));
}HIIIIIIIIIIIIILFE... PLS
-
Weed kannst du als ganz einfache Variable deklarieren,wie
new WEEDGramm[MAX_PLAYERS];// Im Command, wo mans haben soll:
WEEDGramm[playerid]++;
//bzw.
WEEDGramm[playerid] += x;Was mir aufgefallen ist, deine Variabeln, wie WEEDgepflanzt sind einmalig und keine Arrys. D.h. wenn jemand /weedpflanzen macht, wäre das WEEDgepflanzt für alle auf 1 gesetzt.
Benutzt daher new WEEDgeplfanzt[MAX_PLAYERS] (= für jeden Spieler existiert diese Variabel nun...). Verwendung dann mit WEEDgepflanzt[playerid]; . Nebenbei: Da du sowieso nur zwischen "1" und "0" unterscheidest, reicht true und false => bool.
// Ganz Oben
enum AcceptInfo
{
gewicht,
preis,
dealer
}
new Accept[MAX_PLAYERS][AcceptInfo];
new WEEDgramm[MAX_PLAYERS];// Unter das OnPlayerCommandText
new cmd[128];
new tmp[128];
new giveplayerid, moneys, idx;cmd = strtok(cmdtext, idx);
if(!strcmp(cmd,"/accept",true))
{
if(Accept[playerid][gewicht] <= 0 || Accept[playerid][preis] <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Angebot!");
if(GetPlayerMoney(playerid) < Accept[playerid][preis]) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Geld dafür im Moment!");
WEEDgramm[playerid] += Accept[playerid][gewicht];
GivePlayerMoney(playerid, -Accept[playerid][preis]);
SendClientMessage(playerid,COLOR_GREEN,"*** Weed angenommen. Viel Spaß damit !");
GivePlayerMoney(Accept[playerid][dealer],Accept[playerid][preis]);
Accept[playerid][gewicht] = 0;
Accept[playerid][preis] = 0;
Accept[playerid][dealer] = 0;
// Was auch immer
return 1;
}
if(!strcmp(cmd,"/weedsell",true))
{
if(WEEDgramm[playerid] == 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Du hast kein Weed (0 Gramm)");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,COLOR_GREEN,"*** Angegebener User nicht online!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
new gramm = strval(tmp);
if(gramm <= 0 || gramm >= 1000) return SendClientMessage(playerid,COLOR_GREEN,"*** Gramm muss zwischen 1 und 999 sein!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GREEN,"USE: /weedsell [ID] [GRAMM] [PREIS]!");
moneys = strval(tmp);
if(moneys <= 0) return SendClientMessage(playerid,COLOR_GREEN,"*** Preis muss über 0 sein!");
SendClientMessage(playerid,COLOR_GREEN,"*** Weedangebot abgegeben!");
Accept[giveplayerid][gewicht] = gramm;
Accept[giveplayerid][preis] = moneys;
Accept[giveplayerid][dealer] = playerid;
return 1;
}
// ReturnUser Code falls du ihn nicht hast. Ist von mir gibts aber bestimmt von irgendwem anders besser
stock ReturnUser(strings[])
{
new count = 0;
new len = strlen(strings);
if(len > 3)
{
for(new i = 0; i < MAX_PLAYERS;i++)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(i,name,sizeof(name));
if(!strcmp(name,strings,false,MAX_PLAYER_NAME))
{
return i;
}
else
{
count = 1;
}
}
}
else
{
return strval(strings);
}
return (count == 1) ? (INVALID_PLAYER_ID) : (strval(strings));
}
Es ist spät, ich bin müde und hab den Code ungetestet aus dem Kopf geschrieben. Hoffe daher, dass es klappt, sonst mach ich es dir heute (später) richtig.
Für Neulinge empfiehlt sich aber dcmd & sscanf
[ SCRIPTING ] Commands mit Parametern
by Goldkiller.Danke mal für deine Hilfe, doch etwas funktioniert bei deinem Script nicht.
Also selbst wenn ich Weed haben kommt trotzdem immer "Du hast kein Weed" und zwar immer^^
Was tun? -
muss es zwar erst testen aber DANKE! so ne gute hilfe hab ich noch nie bekommen
EDIT:
Jetzt vversteh ich das endlich mit den Unterschied zwischen zB.: WEEDgepflanzt = 0; oder halt mit [Maxplayers].....
WUsste das eben nie was das bringt^^EDIT 2:
Hab eienn error:
symbol is never used...
aber der is irgendwo also keine zeile angegeben könnte man sagen^^ -
Also habe heute mein eigenes Weedsystem begonnen. Hier mal der "Grundcode":
if(!strcmp(cmd, "/weedpflanzen", true))
{
if(WEEDgepflanzt == 0)
{
WEEDgepflanzt = 1;
GetPlayerPos(playerid,XWeed,YWeed,ZWeed);
weedobject = CreateObject(823, XWeed, YWeed, ZWeed - 3, 0, 0, 0);
SendClientMessage(playerid,COLOR_GREEN,"Du hast Weed erfolgreich angebaut!");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du hast schon Weed angebaut.");
}
return 1;
}
if(!strcmp(cmd, "/weedgiessen", true))
{
if(WEEDgepflanzt == 1)
{
WEEDgegossen = 1;
MoveObject(weedobject, XWeed, YWeed, ZWeed , 0.05);
SendClientMessage(playerid,COLOR_GREEN,"Du hast das Weed erfolgreich gegossen. Es wächst nun.");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst zuerst WeedSamen pflanzen um das Weed zu giessen!");
}
return 1;
}
if(!strcmp(cmd, "/weedernten", true))
{
if(WEEDgepflanzt == 0)
{
if(WEEDgegossen == 1)
{
//IRgendwas hier -> man bekommt 10 Gramm oder so^^
SendClientMessage(playerid,COLOR_GREEN,"Weed erfolgreich geerntet!");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst das Weed zuerst giessen!");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst das Weed zuerst pflanzen und dann giessen!");
}
return 1;
}Jetzt möchte ich es irgendwie machen das man eben dann Weed hat(WICHTIG: Wenn man das selbe nochmal macht also pflanzen ernten etc. dann erhält man "2 Weed"(xD -> in Gramm dann oder so..^^)
Und man kann die dann verkaufen mit /giveweed ID(des spielers der es bekommt) Gramm(also von der Menge her wieviel du hergibst) PREIS(und dann der Preis den du verlangst(nur zwischen zB. 200 und 5000 möglich)BITTE HELFT MIR!
-
danke wusste nie das das die parameter sind -> sehe es mir gleich mal an^^
-
... solchen Sachen wie /skin -skinid-!
also die commands wo man danach was "eingeben" kann/muss eben solche /kick id /ban id /givemoney id.
Ich hab im englischen Wiki ne "naleitung(glaub^^) gefunden doch verstehen tu ich das noch lange nicht^^
bräuchte so ne Schritt für Schritt erklärung xDHätte da jemand eine anleitung bitte?!
MFG. BMGP
-
habs gerade selbst rausgefunden^^
und wie geht das mit dem anti command?!Aja hab gerade was probiert.
also:new inDM = 0;
Unter dem deathmatch command dann halt
inDm = 1;
und unter OnPlayerSpawn das:
if(imDM == 1)
{
new iRandom = random(sizeof(DMSpawn));
SetPlayerPos(playerid, DMSpawn[iRandom][0], DMSpawn[iRandom][1],DMSpawn[iRandom][2]);
}
Nur wenn ich im dm bin und ich getötet werde werde ich trotzdem normal und nicht im DM gespawnt...PLS HILFE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
habe eine deathmatcharena. möchte da random spawns. also man gibt /deathmatch ein und teleportiert sich zu einem dieser folgenden punkten:
{555.017395, 2876.487304, 2.827838},
{556.508056, 2932.969482, 3.213321},
{583.509826, 2956.563232, 10.022232},
{583.248596, 2956.373535, 18.422161},
{613.906372, 2966.900634, 7.801957},
{635.815551, 3020.493164, 2.087232},
{593.451171, 3056.166503, 2.230519},
{620.233947, 2918.290527, 2.558469},
{609.661682, 2898.529052, 2.376594},
{582.865478, 2864.914062, 2.281667},aja und wie mache ich es das in der arena keine Commands verwendet werden können(außer /back)
-
Und wie kann ich anhand von strings zB. ein Lotto machen?!
also mit random...
ad braucht man dann halt auch strings oder? xD -
hmm ja ich glaub ich verstehs ja wies geht nur ich versteh den Sinn dahinter nicht^^
Also statt zum beispiel eben string - zb. SendClientMessageToAll(COLOR, string) - Einfach SendClientMessageToAll(COLOR, "Hallo Welt") ?!?! -
also hi!
Ichbegreife nun die Grundlagen des scripten so ziemlich xD
Nun möchte ich mit "Variablen" versuchen(also mit diesem % + zeichen) und wie das ganze aufgebaut ist.
Kann mir jemand einen link schicken wo genau ich das in SAMP wiki sehen kann(habe es mal irgendwo gefunden) bzw. ob es Tutorials zu diesem Thema gibt?Gruß BMGP
EDIT:
Aja und diese string sache versteh ich nicht -> Tutorial etc.?! -
kann ich auch optionen für bestimmte checkpoints (also nicht letzten sondern 2. 5. etc..) machen???
Also statt new lastcheckpoint....Will nämlich das man bei bestimmten CHeckpoints gefreezed wird und stehn bleiben muss(nicht das es als "rennen" gesehen wird xDDD)
-
Also, habe vor kurzem versucht ein Coordinatenspeicherscript.
habe bei public OnPlayerCommandText(playerid, cmdtext[]) das eingefügt:if(!strcmp(cmd, "/ssave", true))
{
if(IsPlayerAdmin(playerid))
{
//Position
new string1[128];
new Float:XCoordsSave, Float:YCoordsSave, Float:ZCoordsSave;
GetPlayerPos(playerid, XCoordsSave, YCoordsSave, ZCoordsSave);
//Sound
new Float:XCoordsSaveSound, Float:ZCoordsSaveSound, Float:YCoordsSaveSound
GetPlayerPos(playerid, XCoordsSaveSound, YCoordsSaveSound, ZCoordsSaveSound);
PlayerPlaySound(playerid,1150,XCoordsSaveSound, YCoordsSaveSound, ZCoordsSaveSound);
//Position
new File:pos=fopen("CoordonatesSaves.txt", io_append);
format(string1, 256, "%s\r\n {%f, %f, %f}", XCoordsSave, YCoordsSave, ZCoordsSave);
fwrite(pos, string1);
fclose(pos);
SendClientMessage(playerid,COLOR_RED,"Racepoint gespeichert!");
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du musst Admin sein um das machen zu können!");
}
return 1;
}Es geht auch nur es sind dann zwei "Fehler" . Also in dem CoordonatesSaves.txt steht das dann so da:
{-1655.850708, 13.881608, 0.000000}
{-1654.343261, 13.994992, 0.000000}÷
{-1657.223510, 13.926807, 0.000000}
{-1580.377563, 24.313919, 0.000000}ë
{-1668.388549, 13.343750, 0.000000}{-1670.535888, 13.335947, 0.000000}
einmal diese "seltsamen" zeichen(ë,÷,) und die Z Koordinaten funktionieren anscheinend nicht.
ok meine Frage zu den umlauten:
habe auf vielen Servern ein ÖÄÜ normal gesehen -> nur auf meinem Server geht es nicht da wird irgendwas angezeigt^^ weiß grad net was(wenn es wichtig is schaue ich halt nochmal nach *gg*)
Wie mache iche s das die angezeigt werden? -
Also mein Server stürzt seit gestern mmer ab sobald ich ihn starte.
Hier die Crashinfo:Code
Alles anzeigen-------------------------- Exception At Address: 0x772F8B02 Registers: EAX: 0x00000024 EBX: 0x0000005B ECX: 0x004ABD60 EDX: 0x00000000 ESI: 0x00000024 EDI: 0x00000020 EBP: 0x0012F13C ESP: 0x0012F128 EFLAGS: 0x00010206 Stack:
und hier meine server.cfg:
Code
Alles anzeigenecho Executing Server Config... lanmode 0 rcon_password *************** maxplayers 50 port 7777 hostname BETA 0.3 NWC gamemode0 NEU filterscripts shamal CoordsSave gAdmin base gl_actions gl_property gl_realtime npc_record announce 0 query 1 weburl www.sa-mp.com maxnpc 50 onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 400.0 stream_rate 500
andere frage wie kann ich die IP von der die NPC's connecten ändern?! Hab es mal irgendwo gesehen nur vergessen wo..
-
juhu, keine fehlermeldung mehr!
nur leider passiert nichts wenn ich dann in der nähe von dem punkt bin!
also keine Gametextforplayer meldung...-liegt es vielleicht am isplayerinrangeofpoint?!
muss man da irgendein Define machen?!
hab nämlich im englischen SAMP forum sowas gelesen..
der hat glaub ich sowas geschrieben: -
Also habe nun auf meinem 0.3 server nen fly npc erstellt(flugzeug shamal -> hab ein script das man in shamal als passenger einsteigen kann)
Nun wenn man einsteigt ist man in nem interior und man sieht ja nicht das man da ist^^
Jetzt wollte ich dazu was erstellen:
forward lvairport();
public lvairport()
{
if(IsPlayerInAnyVehicle(playerid))
{
if (GetVehicleModel(vehicleid) == 519 && ispassenger)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, 1477.654541, 1367.563964, 10.398267))
{
GameTextForPlayer(playerid,"Wir sind nun in ~n~~r~Las Venturas ~n~gelandet.",3000,3);
}
}
}
return 1;
}habe natürlich auch timer erstellt^^:
SetTimer("lvairport", 500, true);Nun wenn ich das compile erhalte ich 4 Error:
3x undefined Symbol "playerid"
1x undefined Symbol "vehicleid"Nun wie kann ich das richten bzw. viell könnte ich es ja irgendwie anders machen?!
Weil in "public OnPlayerVehicle" wird es ja nur überprüft wenn du einsteigst und nicht dauerhaft wenn du drinn bist..