Möglicherweise liegt es daran, dass der dritte Button keine ControlID hat, ebenso wie das Bild. Gebe dem Button noch "gButton3" mit.
Beiträge von Jeffry
-
-
Dann hast du "MyText" schon mal als ID verwendet. Nenne es irgendwie anders.
-
for(new i = 0; i <= MAX_PLAYERS; i++)
Zu
for(new i = 0; i < MAX_PLAYERS; i++) -
Das ist ein anderes Problem dann.
Kannst du den dazu bitte mal posten? -
-
Kannst du den Server bitte mal mit Crashdetect starten und dann den Log nochmal posten?
-
Hier die Include pastebin.com/rwRMcwsw
Zeile 333:
Das könntest du, um die eine Warnung los zu werden, hierzu ändern:
stock _progress2_renderBar(playerid, barid)Die zweite Warnung (59461) scheint woanders her zu kommen.
pastebin.com/zdD3b7Nr (Siehe Zeile 37.)
Ändere die Zeile 37 zu:
foreach (new playerid : Player)Gegebenenfalls steht dort noch irgendwo "new playerid", dann müsste das entfernt werden. Oder du versuchst es hier ohne das new.
foreach (playerid : Player) -
Hab ich jetzt davor gemacht, greift aber nicht, respawne dann einfach
Habe es dir etwas angepasst.
Letztendlich ging es nur um eine Stelle:
killerteam = gTeam[killerid];Code:
public OnPlayerDeath(playerid, killerid, reason)
{
// if(!IsPlayerConnected(playerid)) return 1;
// if(playerid == INVALID_PLAYER_ID) return 1;
new name[MAX_PLAYER_NAME];
new string[256];
new playercash;
new victimteam;
new Float:px,Float:py,Float:pz;
new killerteam;
if((AtRegestration[playerid] == 0 && PlayerPaintballing[playerid] == 0) && FirstSpawn[playerid] == 0)
{
PlayerInfo[playerid][pTot] = 1;
new Float:pX,Float:pY,Float:pZ;
GetPlayerPos(playerid, pX, pY, pZ);
TotenKopf[playerid][0] = CreatePickup(1254,1, pX, pY, pZ);
PlayerInfo[playerid][pTx] = pX;
PlayerInfo[playerid][pTy] = pY;
PlayerInfo[playerid][pTz] = pZ;
GetPlayerName(playerid, name, sizeof(name));
SendClientMessage(playerid,COLOR_LIGHTBLUE, "Du wurdest schwer verletzt ins Krankenhaus gebracht!");
// SendClientMessage(playerid,COLOR_LIGHTBLUE, "Möchtest du einen Arzt?(/needmedic)");
if(GetPlayerInterior(playerid) == 0)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pMember] == 4 || PlayerInfo[i][pLeader] == 4)
{
// SendClientMessage(i,COLOR_LIGHTBLUE,"[Funk:]Eine Person wurde als schwer verletzt gemeldet!");
// SendClientMessage(i,COLOR_LIGHTBLUE,"Achtung eine Person wurde als schwerverletzt gemeldet!");
// SendClientMessage(i,COLOR_LIGHTBLUE,"Die Position wurde auf dem HUD markiert!(/rmarker zum löschen)");
// SetPlayerCheckpoint(i,PlayerInfo[playerid][pTx],PlayerInfo[playerid][pTy],PlayerInfo[playerid][pTz],5.0);
}
}
}
}
M_OnPlayerDeath(playerid,killerid,reason);
InCargo[playerid] = 0; InLevi[playerid] = 0;
if(FirstSpawn[playerid] == 1)
{
FirstSpawn[playerid] = 0;
}
victimteam = gTeam[playerid];
gPlayerSpawned[playerid] = 0;
GetPlayerName(playerid, name, sizeof(name));
PlayerInfo[playerid][pLocal] = 255;
GetPlayerPos(playerid, px, py, pz);
if(killerid != INVALID_PLAYER_ID)
{
killerteam = gTeam[killerid];
if(reason == 38)
{
new kstring[128];
new kickname[MAX_PLAYER_NAME];
if(IsPlayerConnected(killerid))
{
GetPlayerName(killerid, kickname, sizeof(kickname));
format(string, 256, "Warnung: [%d]%s hat einen Spieler mit einer Minigun gekillt. ACHTUNG [CheatVerdacht].",killerid,kickname);
ABroadCast(COLOR_YELLOW,string,1);
printf("%s", kstring);
}
}
}
if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
{
DisablePlayerCheckpoint(playerid);
gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
}
new caller = Mobile[playerid];
if(caller != 255)
{
if(caller < 255)
{
SendClientMessage(caller, COLOR_GRAD2, " Die Verbindung wurde unterbrochen....");
CellTime[caller] = 0;
CellTime[playerid] = 0;
Mobile[caller] = 255;
}
Mobile[playerid] = 255;
CellTime[playerid] = 0;
}
ClearCrime(playerid);
if(PlayerPaintballing[playerid] != 0 && killerid != INVALID_PLAYER_ID)
{
PlayerPaintballKills[killerid] ++;
if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
{
new killer[MAX_PLAYER_NAME];
PaintballWinner = killerid;
PaintballWinnerKills = PlayerPaintballKills[killerid];
GetPlayerName(killerid, killer, sizeof(killer));
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerPaintballing[i] != 0)
{
format(string, sizeof(string), "* %s ist mit %d Kills in Führung.",killer,PaintballWinnerKills);
SendClientMessage(i, COLOR_WHITE, string);
}
}
}
}
return 1;
}
if(IsBlacklist[playerid]==1)
{
ClearBlack(playerid);
IsBlacklist[playerid]=0;
}
if(GettingCK[playerid] < 999 || OnCK[playerid] < 999)
{
if(IsPlayerConnected(killerid))
{
if(GettingCK[killerid] < 999 || OnCK[playerid] < 999)
{
new killer[MAX_PLAYER_NAME];
new dier[MAX_PLAYER_NAME];
GetPlayerName(playerid, dier, sizeof(dier));
GetPlayerName(killerid, killer, sizeof(killer));
format(string, sizeof(string), "* %s hat deinen Charakter gesperrt, du kannst nun mit diesem Charakter nicht mehr Spielen.",killer);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "** %s hat den Spieler %s erledigt**",killer,dier);
CKLog(string);
PlayerInfo[playerid][pCK] = 1;
if(GettingCK[playerid] < 999)
{
GettingCK[playerid] = 999;
}
else if(OnCK[playerid] < 999)
{
OnCK[playerid] = 999;
}
if(GettingCK[killerid] < 999)
{
GettingCK[killerid] = 999;
}
else if(OnCK[killerid] < 999)
{
OnCK[killerid] = 999;
}
KickPlayer[playerid] = 1;
}
}
}
if(PlayerInfo[playerid][pHeadValue] > 0)
{
if(IsPlayerConnected(killerid))
{
if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
{
if(GoChase[killerid] == playerid)
{
ConsumingMoney[killerid] = 1;
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
PlayerInfo[killerid][pMoneys] = PlayerInfo[killerid][pMoneys]+PlayerInfo[killerid][pHeadValue];
format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
SendFamilyMessage(8, COLOR_YELLOW, string);
PlayerInfo[playerid][pHeadValue] = 0;
GotHit[playerid] = 0;
GetChased[playerid] = 999;
GoChase[killerid] = 999;
}
}
}
}
if(victimteam >= 4)
{
if(IsPlayerConnected(killerid))
{
new slice = 100; //$100
playercash = GetPlayerMoney(playerid);
if(gTeam[killerid] != 2 && PlayerInfo[killerid][pMember] != 7)
{
WantedLevel[killerid] += 2;
}
//+ 2 wanted points
SetPlayerWantedLevel(playerid,WantedLevel[playerid]);
if(SafeTime[playerid] <= 0)
{
if(gTeam[killerid] != gTeam[playerid])
{
if(GetPlayerState(killerid) == 1)
{
PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 2;
}
else
{
PlayerInfo[killerid][pKills]++;
}
PlayerInfo[playerid][pKills]--;
}
}
if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || (gTeam[killerid] == gTeam[playerid] && gTeam[playerid] != 4))
{
slice = 0;
}
if (((gTeam[killerid]) != 4) && ((gTeam[killerid]) == gTeam[playerid]))//no team kill
{
slice = 0;
}
if (playercash > 0)
{
GivePlayerMoney(playerid, -slice);
PlayerInfo[playerid][pMoneys] = PlayerInfo[playerid][pMoneys]-slice;
}
else
{
slice = slice+500;
}
GivePlayerMoney(killerid, slice);
PlayerInfo[killerid][pMoneys] = PlayerInfo[killerid][pMoneys]+slice;
PlayerPlaySound(killerid, 1083, 0.0, 0.0, 0.0);
if (((gTeam[killerid]) == 3) && reason != 49)
{
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
else if (((gTeam[killerid]) == 3) && reason == 49)
{
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
}
}
else if (victimteam == 2)
{
if(IsPlayerConnected(killerid))
{
// Cop kill
PlayerInfo[playerid][pKills]--;
if (gTeam[killerid] == 2)//cops kill cop
{
PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
// GivePlayerMoney(killerid, -suecost);
printf("COP: %s hat %s getoetet!",GetName(killerid),GetName(playerid));
// GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
}
if (gTeam[killerid] >= 3)
{
WantedLevel[killerid] += 2; //+ 2 wanted points
if(reason != 49)
{
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
else if (reason == 49)
{
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
}
if(gTeam[killerid] >= 5 && SafeTime[playerid] <= 0)
{
if(GetPlayerState(killerid) == 1)
{
PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills]+2;
}
else
{
PlayerInfo[killerid][pKills]++;
}
WantedLevel[killerid]+=2;
}
}
}
else if (victimteam == 3)
{
if(IsPlayerConnected(killerid))
{
// Civ kill
if ((gTeam[killerid]) == 2 || PlayerInfo[killerid][pMember] == 7)//cops kill civ
{
if(WantedLevel[playerid] < 1)
{
PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
printf("COP: %s hat Zivilist %s getoetet!(Ohne Wanteds)",GetName(killerid),GetName(playerid));
//GivePlayerMoney(killerid, -suecost);
//GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
}
}
else
{
WantedLevel[killerid] += 2;
}
if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason != 49)
{
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
else if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason == 49)
{
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
}
}
else if (victimteam == 1)
{
if(IsPlayerConnected(killerid))
{
// Civ kill
if ((gTeam[killerid]) == 2)//cops kill civ
{
PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
printf("COP: %s hat Zivilist %s getoetet!(Ohne Wanteds)",GetName(killerid),GetName(playerid));
// GivePlayerMoney(killerid, -suecost);
//GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
}
else if ((gTeam[killerid]) == 1)//med kill civ
{
printf("Medic: %s hat Zivilist %s getoetet!",GetName(killerid),GetName(playerid));
// GivePlayerMoney(killerid, -suecost);
//GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
}
if (((gTeam[killerid]) == 4) && reason != 49)
{
SetPlayerCriminal(killerid,255, "Vorsätzlicher Mord");
}
else if (((gTeam[killerid]) == 3) && reason == 49)
{
SetPlayerCriminal(killerid,255, "Fahrerflucht");
}
}
}
if (victimteam >= 3 && WantedLevel[playerid] > 0 && killerteam == 2)
{
SetPlayerFree(playerid,killerid, "Gekillt");
}
// killerid = INVALID_PLAYER_ID;
SetPlayerColor(playerid,COLOR_GRAD2);
return 1;
} -
Wenn du es so unklammerst, muss es negiert werden.
if(killerid != INVALID_PLAYER_ID)Allerdings muss das Krankenhaussystem außerhalb stehen, davor oder danach.
-
Aber wie soll sonst mein Krankenhaus System greifen?
Schreibe es vor die Abfrage, solange dort nicht [killerid] als Array Index verwendet wird.
Oder umklammere alles außer das Krankenhaussystem mit der Abfrage, anstatt diese mit return 1 zu versehen.
-
weil wen ich /1000 mache zieht er erst nach 100km ab oder?
Nein, er zieht nach wie vor den Anteil nach 150 Einheiten ab.
-
Beim PayDay:
new steuer;
for(new vehSlot=0;vehSlot<MAX_PLAYER_VEHICLES;vehSlot++)
{
if(!strcmp(GetName(playerid), PrivateVehicle[playerid][vehSlot][vehBesitzer], true))
{
if(IsValidVehicle(PrivateVehicle[playerid][vehSlot][vehID]))
{
for(new i = 0; i < sizeof(Vehicle Shop), i++)
{
if(PrivateVehicle[playerid][vehSlot][modelid] == VehicleShop[i][modelid])
{
steuer += VehicleShop[i][KFZSteuer];
break;
}
}
}
}
}
printf("KFZ Steuer: %d", steuer);muss ich das einfach nur durch 100 oder durch 1000?
Dass aktuell durch 10 ist, müsste es dann durch 1000 sein.
-
Genau das macht der Code, den ich dir gegeben habe.
Du musst lediglich PlayerInfo[playerid][pPayDayTime] beim SpielerSpeichern speichern und beim Login wieder aus der Datenbank/Datei laden, aber das ist ja klar.
-
Kannst du bitte die GetPlayerVehicleCount Funktion posten?
-
aber die Zeit bis zum PayDay soll einfach gespeichert werden
Was heißt das?
Ich kenne die beiden Server nicht, erkläre daher bitte genau, wie du es haben willst.Und unterlasse bitte die Vollzitate, es macht keinen Sinn, dass du den Quelltext, den ich postet habe, zitierst.
-
Das kannst du wesentlich einfacher machen, indem du einfach einen einzigen Timer bei OnGameModeInit startest, und diesen immer für alle Spieler ausführst:
public PayDayAbzug()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
PlayerInfo[i][pPayDayTime]++;
if(PlayerInfo[i][pPayDayTime] >= 60)
{
//PayDayForPlayer(i);
PlayerInfo[i][pPayDayTime] = 0;
SendClientMessage(i,-1,"yo-ho hahaha du hast payday yoo");
}
else
{
SendClientMessage(i,-1,"get schwiftyyy alter du hast eine minute");
}
}
return 1;
}Und bei OnGameModeInit einfach nur:
SetTimer("PayDayAbzug", 60000, true); -
Vor:
if((GetMoney(playerid) - VehicleShop[i][Preis]) < 0)Das einfügen:
if(PlayerInfo[playerid][pLevel] < VehicleShop[i][Level])
{
SendClientMessage(playerid, COLOR_WHITE, ERROR_LEVEL);
SetCameraBehindPlayer(playerid);
UnfreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
return 1;
}PlayerInfo[playerid][pLevel] und ERROR_LEVEL entsprechend anpassen, wie es bei dir heißt.
-
Pastebin.com
Du kannst es aber auch hier sauber posten (was besser ist).
Einfach den Code aus der .pwn Datei heraus kopieren und hier nicht den WYSIWYG Editor nutzen, sondern den Code-Editor (ersten Button anklicken).
Dann den Code zwischen [pwn][/pwn] einfügen, und schon sieht es sauber aus.
Lediglich bearbeiten solltest du den Post dann nicht mehr, sonst steht alles in einer Zeile.Alternativ, nutze den "Code"-Tag (</> Zeichen) und wähle den C-Code, dann geht auch die Bearbeiten Funktion, sowie der WYSIWYG Editor.
-
Danke.
Poste jetzt bitte den Code noch leserlich, so erkennt man nämlich gar nichts. -
Es handelt sich hierbei offensichtlich nicht um eine kleine Scripting Frage.
Eröffne bitte einen separaten Thread, um adequate Hilfe zu erhalten.