Skip to content
View in the app

A better way to browse. Learn more.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Spectate probleem

Ik heb het spectate systeem van Ladmin4v2 gebruikt voor mijn gamemode maar het spectate systeem werkt niet goed op mijn gamemode =/

ID 0 crasht de hele server als hij een andere persoon wilt spectaten.

Edit:

Ik heb mijn server met meer dan 4 mensen getest en nog steeds ID 0 crasht de hele server =/

Ik dacht om iets anders te proberen maar ik weet niet hoe dat moet.

Wat ik wil doen is:

EDIT:

FIXED!

//On Top
#define isPlaying 1
#define isDead 2

static gTeam[MAX_PLAYERS];

//OnPlayerSpawn
gTeam[playerid] = isPlaying;

//OnPlayerDeath
gTeam[playerid] = isDead;

//En als die gaat spectaten dan wil ik dit veranderen:
for(new x=PlayerInfo[playerid][specID]+1; x<=MAX_PLAYERS; x++)

naar

for(new x=isPlaying+1; x<=MAX_PLAYERS; x++)
//Maar ik weet niet of ik daar IsPlaying moet schrijven of gTeam[x] == isPlaying of iets anders?

script:

//OnTop of script
enum PlayerData
{
SpecID
}
new PlayerInfo[MAX_PLAYERS][PlayerData];

//somewhere in ur script
stock StartSpectate(playerid, specplayerid)
{
for(new x=0; x<MAX_PLAYERS; x++) {
 if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && PlayerInfo[x][specID] == playerid) {
 AdvanceSpectate(x);
}
}

SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(specplayerid))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specplayerid));
}
else
{
PlayerSpectatePlayer(playerid, specplayerid);
}
return 1;
}

stock StopSpectate(playerid)
{
TogglePlayerSpectating(playerid, 0);
return 1;
}

stock AdvanceSpectate(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && PlayerInfo[playerid][specID] != INVALID_PLAYER_ID)
{
 for(new x=PlayerInfo[playerid][specID]+1; x<=MAX_PLAYERS; x++)
{
 if(x >= MAX_PLAYERS) x = 0;
	 if(IsPlayerConnected(x) && x != playerid)
{
if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && PlayerInfo[x][specID] != INVALID_PLAYER_ID)
{
 continue;
}
else
{
 StartSpectate(playerid, x);
 break;
}
}
}
}
return 1;
}

stock ReverseSpectate(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && PlayerInfo[playerid][specID] != INVALID_PLAYER_ID)
{
 for(new x=PlayerInfo[playerid][specID]-1; x>=0; x--))
{
	 if(x < 0) x = MAX_PLAYERS -1;
	 if(IsPlayerConnected(x) && x != playerid)
{
if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && PlayerInfo[x][specID] != INVALID_PLAYER_ID || (GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
{
 continue;
}
else
{
 StartSpectate(playerid, x);
 break;
}
}
}
}
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
{
if(newkeys & KEY_HANDBRAKE)//Right Mouse
{
 AdvanceSpectate(playerid);
}
if(newkeys & KEY_FIRE)//Left Mouse
{
 ReverseSpectate(playerid);
}
}
return 1;
}

//when player dies [OnPlayerDeath]
for(new x=PlayerInfo[playerid][specID]+1; x<=MAX_PLAYERS; x++)
{
 if(x == MAX_PLAYERS) x = 0;
 if(IsPlayerConnected(x) && x != playerid)
{
StartSpectate(playerid, x);
break;
}
}

Ik heb een race gamemode dus wanneer mensen dood gaan gaan ze op spectate mode en waneer de laatse persoon die overgebleven is heeft gewonnen of is ook dood dan de huidige map eindigd en de andere map loads.

ID 0 crasht de hele server als hij op links / rechts muisbuttons drukt om van players te wisselen.

maar als je ID 1 of hoger bent dan crasht het server niet.

Ik hoop dat iemand mij kan helpen,

Thanks!

Edited by Never

Featured Replies

Crasht de server ook als je naar rechts gaat? Want ik zie zo alleen maar een mogelijk foutje in het naar links gaan.

Onder ReverseSpectate:

if(x == 0) x = MAX_PLAYERS;

Dat moet zijn:

if(x < 0) x = MAX_PLAYERS - 1;

Omdat hij anders buiten het bereik gaat. Hij zal checken of playerid '-1' bestaat, daarna '-2', daarna '-3'. Zo blijft 'ie doorgaan tot de server crasht, aangezien hij toch geen beschikbare speler kan vinden. ;)

  • Author

Oh dankje!

Ja als ik op rechtermuisknop drukte crashde het ook

Thank you very much! ;)

Je kunt proberen om bij AdvanceSpectate dit te veranderen:

if(x == MAX_PLAYERS) x = 0;

naar...

if(x >= MAX_PLAYERS) x = 0;

Dat maakt het wel iets veiliger, maar ik weet niet of daar überhaupt de fout zat.

Edited by Basssss

Dat maakt het wel iets veiliger, maar ik weet niet of daar überhaupt de fout zat.

Inderdaad, heb het net gemeld in de tracker. :engel:

Edit: En ik denk dat een post i.p.v. een triplepost ook wel iets veiliger is. ^_^

>>> Door Thundercover: Het waren drie posts met verschillende instellingen. :puh:<<<

Edited by Thundercover

  • Author

dankjewel Bassss dat je mij helpt knipoog.gif

Thank you very much! biertje.gif

Edit:

Ik heb mijn server met meer dan 4 mensen getest en nog steeds ID 0 crasht de hele server =/

Ik dacht om iets anders te proberen maar ik weet niet hoe dat moet.

Wat ik wil doen is:

//On Top
#define isPlaying 1
#define isDead 2

static gTeam[MAX_PLAYERS];

//OnPlayerSpawn
gTeam[playerid] = isPlaying;

//OnPlayerDeath
gTeam[playerid] = isDead;

//En als die gaat spectaten dan wil ik dit veranderen:
for(new x=PlayerInfo[playerid][specID]+1; x<=MAX_PLAYERS; x++)

naar

for(new x=isPlaying+1; x<=MAX_PLAYERS; x++)

//Maar ik weet niet of ik daar IsPlaying moet schrijven of gTeam[playerid] == isPlaying of iets anders?

Maar ik weet niet of ik daar IsPlaying moet schrijven of gTeam[playerid] == isPlaying of iets anders? kan iemand mij daarmee helpen?

Thanks!

Edited by Never

  • Author

bump

Dat klopt niet helemaal. isPlaying is altijd 1. Je doet nu 'new x = isPlaying + 1'. Hier is isPlaying altijd 1, dus 1 + 1 = altijd 2. :puh:

  • Author

Dat klopt niet helemaal. isPlaying is altijd 1. Je doet nu 'new x = isPlaying + 1'. Hier is isPlaying altijd 1, dus 1 + 1 = altijd 2. :puh:

Oh oke dan

Thanks for Reply :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.