ah, das ist eine gute idee
muss ich das dann so machen?
new team1;
new team2;
und dann beim eintreten der arena:
if(team1 > team2)
{spieler in team 2 setzen}
if(team2 > team1)
{spieler in team 2 setzen}
?
ah, das ist eine gute idee
muss ich das dann so machen?
new team1;
new team2;
und dann beim eintreten der arena:
if(team1 > team2)
{spieler in team 2 setzen}
if(team2 > team1)
{spieler in team 2 setzen}
?
Hey,
ich habe eine Frage,
ich möchte eine DM Arena erstellen und jetzt habe ich schon mit Get und SetPVar in welche teams der Spieler kommen soll. Ich möchte jetzt aber noch abfragen wenn zB in team 1 schon ein Spieler ist, das man dann in team 2 kommt, also sozusagen ein Team ausgleich. Ich weiß leider nicht wie das geht
Wäre nett wenn mir jemand helfen würde.
LG
hey,
ich komme nicht ganz klar mit dem /park befehl den ich erstellt habe, bzw ich weiß einfach nicht mehr weiter...
ich möchte das wenn das fahrzeug spawnt die position gesetzt wird. das klappt auch, aber wenn es zerstört wird, dann klappt das nicht, weil ich das ja mit setvehclepos machen möchte. wie muss ich das jetzt machen, da ich ja kein playerid benutzen kann...
SetVehiclePos(Vehicle[playerid], X, Y, Z); so wollte ich das machen x, y,z sind definiert wo aus der dini ausgelesen werden muss,
und vehicle sieht so aus
new Vehicle[MAX_PLAYERS];
okay,
ocmd:wiederbeleben(playerid,params[])
{
new pID,string[50],string1[50];
if(!isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Sanitäter!");
{
if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_BLAU,"Benutze: /wiederbeleben [Spielername/ID]");
{
if(!IsPlayerInRangeOfPoint(playerid,3,GetPVarFloat(pID,"TotX"),GetPVarFloat(pID,"TotY"),GetPVarFloat(pID,"TotZ"))) return SendClientMessage(playerid,COLOR_GRAU,"Du befindest dich nicht bei der Leiche");
{
if(GetPVarInt(pID, "Todtime") <= 0)return SendClientMessage(playerid,COLOR_GRAU,"Der Spieler ist nicht Tot!");
if(GetPVarInt(pID, "Todtime") >= 1)
{
new Float:posx,Float:posy,Float:posz;
GetPlayerPos(playerid, posx, posy, posz);
KillTimer(TotTime[pID]);
SetPVarInt(pID,"Todtimer",-1);
SetPlayerWeather(pID,1);
GangZoneDestroy(Friedhofszone);
SetPlayerVirtualWorld(pID,0);
SetPlayerWorldBounds(pID,20000.0000, -20000.0000, 20000.0000, -20000.0000);
SetPlayerPos(pID,posx+2,posy,posz);
format(string,sizeof(string),"Du hast %s erfolgreich wiederbelebt!",SpielerName(pID));
SendClientMessage(playerid,COLOR_GRÜN1,string);
format(string1,sizeof(string1),"Sanitäter %s hat dich wiederbelebt!",SpielerName(playerid));
SendClientMessage(pID,COLOR_GRÜN1,string1);
DestroyPickup(totenkopf[pID]);
Delete3DTextLabel(totentext[pID]);
}
}
}
}
return 1;
}
bei onplayer spawn
Hallo,
ich habe ein Problem,
wenn man wiederbelbt wird, soll der Timer "TotTime" gekillt werden... das ganze klappt aber nicht,...
ich habe das so gemacht:
KillTimer(TotTime[pID]);
und den timer habe ich so benannt:
TotTime[playerid] = SetTimerEx("TodTimer", 60000, 1, "i", playerid);
so habe ich den Timer defieniert:
new TotTime[MAX_PLAYERS];
forward TodTimer(playerid);
Wo ist hier der Fehler?
Danke schonmal im Vorraus,
LG
Marco
Abend,
ich habe ein Problem, wenn ein spieler stirbt soll folgendes kommen:
public OnPlayerText(playerid, text[])
{
if(GetPVarInt(playerid,"Todtime")> 0)
{
SendClientMessage(playerid,COLOR_ROT,"Tote können nicht sprechen!");
}
return 0;
}
Das klappt auch, aber jetzt kann man nicht mehr reden...
ich habe ein bisschen rumprobiert: wenn ich return 1; benutze dann kann man reden, aber wnen man stirbt steht da: tote können nicht reden, und dann der text den man eingegeben hat.
bei return 0; kommt nur der text, aber man kann auch nicht mehr als lebender reden .,.
weiß irgendjemand vllt was ich falsch gemacht habe?
MFG
Das Problem das ich habe ist, das immer nur der Spieler mit id 0 auf den Friedhof gepackt wird... das ist so, seid dem ich die Abfrage drin habe ob ein Spieler connectet ist, denn wenn er connectet und dann auf Spawn klickt gibt es manchmal den Bug das ein Spieler stirbt. deswegen habe ich eine Abfrage reingepackt ob der Spieler "connect,1"hat, denn dies bekommt er erst nach 2 sek auf den Server. wenn jemand das erste mal spawnt und "connect,0" hat und dann stirbt (durch den Bug) wird er nicht auf den Friedhof geportet... somit wollte ich den Bug umgehen, wenn ich die Abfrage allerdings rausnehme funktioniert alles, allerdings passiert es öfters, das man beim Spawn dann stirbt
Hallo,
ich habe ein Problem.... es gibt diesen Bug, das wenn man spawnt manchmal stirbt. Deswegen habe ich unter onplayerconnect:
SetPVarInt(playerid,"Connect",1)
damit man nicht stirbt und dann 3 minuten im krankenhaus bleiben muss nur weil man spawnt.
Wichtig noch ist, das der erste Spieler aufm Server auf den Friedhof gesetzt wird, alle anderen allerdings nicht. Sie spawnen so als wenn sie ohne todzeit gestorben wären.
Unter OnPlayerDeath:
if(GetPVarInt(playerid,"Connect")== 0)
{
GetPlayerPos(playerid,x,y,z);
SendClientMessage(playerid,COLOR_GRAU,"Du bist Tod...");
SetPVarInt(playerid, "Todtime", 3);
}
Unter onplayerspawn:
SetTimer("Connect",1000,0);
und das auf den friedhof setzten.
das public connect:
public Connect(playerid)
{
SetPVarInt(playerid,"Connect",0);
return 0;
}
Wäre superfantastisch nett wenn mir jemand helfen würde,
LG
Hey Leute,
also ich habe 3 Probleme, ich benutze das Haussystem nach diesem Tutorial: simples Haussystem
Ich habe schon einiges editiert, bekomme aber den Haus spawn und Lock befehl nicht hin, und außerdem funktioniert mein einmiete Befehl nicht
1) Spawn Haus:
Ja wie gesagt, ich möchte, dass wenn man /spawn eingibt und ein Haus besitzt im Haus spawnen soll. Das hab ich auch schon hinbekommen und es funktioniert auch, aber man kommt nach dem Spawn nicht mehr aus dem Haus raus...
Hier mal der Befehl:
ocmd:spawn(playerid,params[])
{
SetPVarInt(playerid,"Spawn",2);
SendClientMessage(playerid,COLOR_GRÜN1,"Du spawnst ab jetzt in deinem Haus.");
return 1;
}
Okay der ist nicht schwer, die Abfrage ob der Spieler Hausbesitzer ist lasse ich erstmal weg.
Wenn er im Haus spawnen soll:
Bei OnPlayerSpawn:
if(GetPVarInt(playerid,"Spawn")==2)
{
for(new haus=1;haus<MAX_HAUS;haus++)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
{
new innenraum = HausInfo[haus][haus_innenraum];
SetPlayerPos(playerid,HausInnenraum[innenraum][innen_x],HausInnenraum[innenraum][innen_y],HausInnenraum[innenraum][innen_z]);
SetPlayerInterior(playerid,HausInnenraum[innenraum][innen_interior]);
}
}
}
Das Problem ist nicht das Spawnen, ich komme nicht wieder raus aus dem Haus.... beim /enter & /exit Befehl funktioniert es aber:
ocmd:exit(playerid,params[])
{
if(inHaus[playerid] == -1)return SendClientMessage(playerid,COLOR_GRAU,"Du bist in keinem Haus!");
if(GetPVarInt(playerid,"ImHaus")==1)
{
new haus = inHaus[playerid];
new innenraum = HausInfo[haus][haus_innenraum];
if(!IsPlayerInRangeOfPoint(playerid,5,HausInnenraum[innenraum][innen_x],HausInnenraum[innenraum][innen_y],HausInnenraum[innenraum][innen_z]))return SendClientMessage(playerid,0x00FF00,"Du bist nicht am Ausgang!");
SetPlayerPos(playerid,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SendClientMessage(playerid,COLOR_WEISS,"Du hast das Haus verlassen!");
inHaus[playerid] = -1;
}
return 1;
}
ocmd:enter(playerid,params[])
{
for(new haus=1;haus<MAX_HAUS;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
if(strcmp(HausInfo[haus][haus_mieter],name,false) == 0)
{
new innenraum = HausInfo[haus][haus_innenraum];
SetPlayerPos(playerid,HausInnenraum[innenraum][innen_x],HausInnenraum[innenraum][innen_y],HausInnenraum[innenraum][innen_z]); SetPlayerInterior(playerid,HausInnenraum[innenraum][innen_interior]);
SetPlayerVirtualWorld(playerid,HausInnenraum[innenraum][innen_virtualworld]);
inHaus[playerid] = haus;
}
else SendClientMessage(playerid,0x00FF00,"Du bist nicht der Besitzer! Du darfst hier nicht rein!");
}
}
return 1;
}
Das Problem ist, wenn ich im Haus spawne und dann raus gehe, spawne ich in dem dorf hinter Dillimore, also dort, wo man spawnt wenn keine Koordinaten angegeben werden.
Normal mit /enter und dann /exit funktioniert es aber...
2) Lock befehl
Okay, der Befehl funktioniert einfach gar nicht erst...
ocmd:lock(playerid,params[])
{
for(new haus=1;haus<MAX_HAUS;haus++)
{
new pfad[50];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 1 || strcmp(HausInfo[haus][haus_mieter],name,false) == 1) {
if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
{
if(HausInfo[haus][haus_locked], dini_Int(pfad,"locked") == 1)
{
GameTextForPlayer(playerid, "~g~Haus aufgeschlossen!", 3000, 6);
dini_IntSet(pfad,"locked",0);
return 1;
}
if(HausInfo[haus][haus_locked], dini_Int(pfad,"locked") == 1)
{
GameTextForPlayer(playerid, "~r~Haus abgeschlossen!", 3000, 6);
dini_IntSet(pfad,"locked",1);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAU, "Du bist nicht bei deinem Haus!");
return 1;
}
}
}
return 1;
}
und 3) der einmiete Befehl:
Auch dieser Befehl funktioniert gar nicht erst, bzw er funktioniert nur wenn man auch der Besitzer des Hauses ist... abgefragt wird aber das aber nicht...
ocmd:einmieten(playerid,params[])
{
for(new haus=1;haus<MAX_HAUS;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
{
//if(GetPVarInt(playerid, "eingemietet")== 1)return SendClientMessage(playerid,COLOR_GRAU,"Du bist bereits woanders eingemietet!");
//{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)return SendClientMessage(playerid,COLOR_GRAU,"Dieses Haus gehört dir bereits!");
if(strcmp(HausInfo[haus][haus_mieter],name,true))return SendClientMessage(playerid,COLOR_GRAU,"Du hast dich bereits in diesem Haus eingemietet!");
if(strcmp(HausInfo[haus][haus_besitzer],"Niemand",false)== 0)return SendClientMessage(playerid,COLOR_GRAU,"Du kannst dich nicht in das Haus einmieten, da es keinen Eigentümer gehört!");
//if(strcmp(HausInfo[haus][haus_mieter],"Niemand",false))
if(GetPlayerMoney(playerid) < HausInfo[haus][haus_mieter])return SendClientMessage(playerid,COLOR_GRAU,"Du hast nicht genug Geld bei dir!");
if(strcmp(HausInfo[haus][haus_mieter],"Niemand",true))
{
GivePlayerMoney(playerid,-100); // Geld abziehen
new pfad[50];
format(pfad,50,"/Haus/%d.txt",haus); // Pfad formatieren
dini_Set(pfad,"mieter",name); // Besitzer überschreiben
dini_IntSet(pfad,"mieteinnahmen",HausInfo[haus][haus_mieteinnahmen]+100);
SetPVarInt(playerid, "eingemietet", 1);
SendClientMessage(playerid,COLOR_GRÜN1,"Du hast dich erfolgreich in das Haus eingemietet.");
}
}
}
return 1;
}
Okay, ich bitte auch wirklich inständig mir zu helfen... ich verzweifle schon dadran... ihr seid meine letzte Hoffnung
Wenn ihr mehr Infos bracht sagt bescheid
MFG
Marco
//EDIT: Rechtschreibung
//EDIT: Enter-, Exit Befehl
//push Kann mir wirklich niemand helfen? Konnte das Problem immer noch nicht lösen
ja genau die meine ich
Ich probiere das mal nachher aus
Nein, das klappt nicht... man soll sich nur innerhalb der ganzone bewegen bei mir, ich ahbe also die selben koordinaten benutzt... die ganzone ist dann aber verschoben, also die gangzone ist uB hier: X|Y und gleich dahinter also bei y fängt die wolrdbount zone an, das bedeutet, das man immer zu y geschleudert wird...
Hallo,
ich habe eine Frage, kann mir einer erklären wie ich bei SetPlayerWorld Bounce die Positionen richtig ermittle bzw wie ich mich hinstelen muss um ein vernünftiges rechteck zu erstellen?
Ich verstehe die erklärung im Wiki nicht wirklich
LG
Danke, jetzt klappt es
Danke für deine Antwort,
aber bei mir wird das leider immer noch so angezeigt
LG
Moin,
ich habe 2 Probleme, einmal möchte ich einen spieler muten, ich ahbe das jetzt so gemacht:
public OnPlayerText(playerid, text[])
{
if(GetPVarInt(playerid,"Todtime")> 0)
{
if(stumm==1) return SendClientMessage(playerid,COLOR_ROT,"TOte können nicht sprechen!");
}
return 1;
}
oben noch new stumm;
ingame steht dann wenn ich was schreibe:
Zitat
Tote können nicht sprechen
dadrunter meinen eingegebenen text
wie bekomme ich das nur Tote können nicht sprechen da steht?
ah okay... ich weiß jetzt was für ein problem ich habe... wenn der spieler tot ist soll sich seine position in einer dini speichern. Aber sie wird nicht gespeichert... ich zeige mal alles wie ich es gemacht habe:
onplayerdeath:
new Float:x,Float:y,Float:z;
new Spielerdatei[120];
GetPlayerPos(playerid,x,y,z);
SetPVarFloat(playerid,"TodX",x);
SetPVarFloat(playerid,"TodY",y);
SetPVarFloat(playerid,"TodZ",z);
dini_FloatSet(Spielerdatei,"TotX",x);
dini_FloatSet(Spielerdatei,"TotY",y);
dini_FloatSet(Spielerdatei,"TotZ",z);
stock register:
dini_FloatSet(Spielerdatei, "TotX",0);
dini_FloatSet(Spielerdatei, "TotY",0);
dini_FloatSet(Spielerdatei, "TotZ",0);
stock loadaccount:
SetPVarFloat(playerid,"TotX",dini_Float(Spielerdatei,"TotX"));
SetPVarFloat(playerid,"TotY",dini_Float(Spielerdatei,"TotY"));
SetPVarFloat(playerid,"TotZ",dini_Float(Spielerdatei,"TotZ"));
stock spielerspeichern:
dini_FloatSet(Spielerdatei,"TotX", GetPVarFloat(playerid,"TotX"));
dini_FloatSet(Spielerdatei,"TotY", GetPVarFloat(playerid,"TotY"));
dini_FloatSet(Spielerdatei,"TotZ", GetPVarFloat(playerid,"TotZ"));
hab ich da iwas falsch gemacht... in der dini steht immer nur 0.0000
okay, das hat sich wahrscheinlich erledigt... ich habe vergessen die positionen zu speichern..
aber jetzt habe ich doch ein anderes Problemchen:
soll geladen werden unter stock loadaccount
dini_Float(Spielerdatei,"TotX", GetPVarFloat(playerid,"TotX"));
bekomme aber folgende warnings:
pwn(14345) : warning 202: number of arguments does not match definition
und natürlich auch bei der Position Y und Z...
bei mir funktioniert diese Abfrage iwie nicht...
if(!IsPlayerInRangeOfPoint(playerid,2,GetPVarFloat(pID,"TotX"),GetPVarFloat(pID,"TotY"),GetPVarFloat(pID,"TotZ"))) return SendClientMessage(playerid,COLOR_GRAU,"Du befindest dich nicht bei der Leiche");
was mache ich schonwieder falsch...
Ah dankeschön Kaliber
//Edit:
Und wenn ich die Position auslesen möchte kann ich aber wieder GetPVarInt benutzen, weil das ja dann wieder Zahlen sind oder?