Szerző Téma: Spawn Zóna  (Megtekintve 1483 alkalommal)

Spawn Zóna
« Dátum: 2012. december 28. - 17:01:30 »
0 Show voters
Hello.
Létrehoztam egy \"spawn zónát\" hogy azon belül ne lehessen megölni másokat, aki pedig ököllel próbálkozik azt pedig megöli. Ez mûködik is viszont azt nem akarja érzékelni hogy én elhagytam a zónát, és már több mindent is próbáltam de sehogy sem akar sikerülni. Valaki megnézné nekem hogy mi a baj?
Itt a kód:
 

#include <a_samp>
#include <dcallbacks>
#if MAX_PLAYERS != 30
#undef MAX_PLAYERS
#define MAX_PLAYERS 30
#endif
new spawnhely;
new bool:inSpawnZone[MAX_PLAYERS];
public OnFilterScriptInit()
{
    spawnhely = GangZoneCreate(2161.597900, 1078.483398, 2075.333740, 988.435058);
    return 1;
}
public OnPlayerConnect(playerid)
{
    inSpawnZone[playerid] = false;
    return 1;
}
public OnPlayerSpawn(playerid)
{
    inSpawnZone[playerid] = true;
    return 1;
}
public OnPlayerUpdate(playerid)
{
if(inSpawnZone[playerid] == true)
        SetPlayerArmedWeapon(playerid,0);
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(inSpawnZone[playerid] == true)
{
        if(weaponid == 0 && (0 <= issuerid <= 30))
        {
            SetPlayerHealth(issuerid,0);
            SendClientMessage(issuerid,0xFF0000FF,\"Meghaltál mert olyan helyen sebeztél másokat ahol tilos\");
        }
}
return 1;
}
OnPlayerEnterArea(playerid,areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = true;
return 1;
}
OnPlayerLeaveArea(playerid,areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = false;
return 1;
}

 
Kösz elõre :D

Nem elérhető Drive

Spawn Zóna
« Válasz #1 Dátum: 2012. december 28. - 17:07:46 »
0 Show voters
OnPlayerLeaveArea(playerid,areaid)
{
        if(areaid == spawnhely)inSpawnLeave[playerid] = false;
        return 1;

 
Szerintem, 100% nem jó de próbálkozok mivel tanuló scripter vagyok :(

Spawn Zóna
« Válasz #2 Dátum: 2012. december 28. - 17:12:18 »
0 Show voters
Idézetet írta: Drive date=1356710866\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31582\" data-ipsquote-contentclass=\"forums_Topic

OnPlayerLeaveArea(playerid,areaid)
{
        if(areaid == spawnhely)inSpawnLeave[playerid] = false;
        return 1;

 
Szerintem, 100% nem jó de próbálkozok mivel tanuló scripter vagyok :(
 
:crazy:
Sajnos nem 100%, hanem 10000% mivel le kell zárni mindent, mást meg nem csináltál rajta..

Nem elérhető Live

  • 507
    • Profil megtekintése
Spawn Zóna
« Válasz #3 Dátum: 2012. december 28. - 18:28:46 »
0 Show voters
public OnPlayerUpdate(playerid)
{
if(inSpawnZone[playerid] == true)
{
SetPlayerArmedWeapon(playerid,0);
}
return 1;
}

 
??

Dupla hozzászólás automatikusan összefûzve. ( 2012. december 28. - 18:30:34 )

OnPlayerEnterArea(playerid,areaid)
{
if(areaid == spawnhely)
{
inSpawnZone[playerid] = true;
}
return 1;
}
OnPlayerLeaveArea(playerid,areaid)
{
if(areaid == spawnhely)
{
inSpawnZone[playerid] = false;
}
return 1;
}
« Utoljára szerkesztve: 2012. december 28. - 18:30:34 írta Live »

Spawn Zóna
« Válasz #4 Dátum: 2012. december 28. - 18:32:24 »
0 Show voters
Ezek ugyanazt jelentik.. ;)

Nem elérhető Live

  • 507
    • Profil megtekintése
Spawn Zóna
« Válasz #5 Dátum: 2012. december 28. - 18:33:45 »
0 Show voters
hát nem...
mert a tiedbe nem volt kapcsos zárójel...

Dupla hozzászólás automatikusan összefûzve. ( 2012. december 28. - 18:39:00 )

Ha nem raksz zárójelet nem tud mit kezdeni vele ...
Velem is volt már így.
« Utoljára szerkesztve: 2012. december 28. - 18:39:00 írta Live »

Spawn Zóna
« Válasz #6 Dátum: 2012. december 28. - 18:49:03 »
0 Show voters
Idézetet írta: Live date=1356716025\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31582\" data-ipsquote-contentclass=\"forums_Topic
hát nem...
mert a tiedbe nem volt kapcsos zárójel...

Dupla hozzászólás automatikusan összefûzve. ( 2012. december 28. - 18:39:00 )

Ha nem raksz zárójelet nem tud mit kezdeni vele ...
Velem is volt már így.
 
Figyelj nem szeretnélek megbántani, de a kapcsos zárójel csak akkor szükséges ha több dolgot akarsz 1 eljáráshoz fûzni, és akkor sem feltétlenül szükséges.
Tehát..
Ez:
 
if(asd == 1) Kick(playerid);

 
és ez:
 
if(asd == 1) 
{
Kick(playerid);
}

 
UGYANAZ.
Akkor..
Ez:
 
if(asd == 1)SendClientMessage(playerid, -1, \"Kickelve lettél\"), Kick(playerid);

 
és ez:
 
if(asd == 1) 
{
SendClientMessage(playerid, -1,\"Kickelve lettél\");
Kick(playerid);
}

 
úgyszint UGYANAZ.
Mellesleg a fent leírt kódban semmi hiba nincs, az a probléma hogy az
 
OnPlayerEnterArea(playerid,areaid) { }
OnPlayerLeaveArea(playerid,areaid) { }

 
valamiért le sem fut, az OnPlayerUpdate és az OnPlayerTakeDamage tehát tökéletesen mûködik.
Mivel a fentiek nem futnak le, így nem változik az inSpawnZone[playerid] logikai értéke.

Nem elérhető Live

  • 507
    • Profil megtekintése
Spawn Zóna
« Válasz #7 Dátum: 2012. december 28. - 18:57:56 »
0 Show voters
stock OnPlayerEnterArea(playerid, areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = true;
return 1;
}

 

stock OnPlayerLeaveArea(playerid, areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = false;
return 1;
}

 

public OnPlayerSpawn(playerid)
{
OnPlayerEnterArea(playerid);
return 1;
}

 
és így?

Spawn Zóna
« Válasz #8 Dátum: 2012. december 28. - 19:28:58 »
0 Show voters
Idézetet írta: Live date=1356717476\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31582\" data-ipsquote-contentclass=\"forums_Topic

stock OnPlayerEnterArea(playerid, areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = true;
return 1;
}

 

stock OnPlayerLeaveArea(playerid, areaid)
{
if(areaid == spawnhely)inSpawnZone[playerid] = false;
return 1;
}

 

public OnPlayerSpawn(playerid)
{
OnPlayerEnterArea(playerid);
return 1;
}

 
és így?
 
Most mondta el..  :laugh:

Spawn Zóna
« Válasz #9 Dátum: 2012. december 28. - 19:30:27 »
0 Show voters
Az OnPlayerEnterArea meg az OnPlayerLeaveArea a dcallbacks.inc által van mûködtetve..
Ez itt a dcallbacks tartalma:
 
/*
*            DCallbacks 1.1
*       (c) Copyright 2006 by DracoBlue
*
* @author    : DracoBlue (http://dracoblue.com)
* @date      : 26th July 2006
* @update    : 25th November 2007
*
* This file is provided as is (no warranties).
*
* Feel free to use it, a little message in
* about box is honouring thing, isn\'t it?
*
*/
#if defined _dcallbacks_included
  #endinput
#endif
#define _dcallbacks_included
#pragma library dcallbacks
// Update the following line to make more areachecks possible.
#define MAX_AREAS_TO_CHECK 100
forward TIMER_DCallbacks();
new Float:AREACHECK_Coords[MAX_AREAS_TO_CHECK][4];
new AREACHECK_Player[MAX_PLAYERS];
new AREACHECK_Count=0;
/*
*  Return the AreaId, starts with 1 not 0.
*/
stock AddAreaCheck(Float:x_min,Float:x_max,Float:y_min,Float:y_max) {
AREACHECK_Coords[AREACHECK_Count][0]=x_min;
AREACHECK_Coords[AREACHECK_Count][1]=x_max;
AREACHECK_Coords[AREACHECK_Count][2]=y_min;
AREACHECK_Coords[AREACHECK_Count][3]=y_max;
AREACHECK_Count++;
return AREACHECK_Count;
}
public TIMER_DCallbacks() {
new i,z;
new Float:x,Float:y,Float:zcoord;
for (i=0;i<MAX_PLAYERS;i++) {
if (IsPlayerConnected(i)) {
   GetPlayerPos(i,x,y,zcoord);
   for (z=0;z<AREACHECK_Count;z++) {
      if ( (AREACHECK_Coords[z][0]<x)&&(AREACHECK_Coords[z][1]>x) &&
         (AREACHECK_Coords[z][2]<y)&&(AREACHECK_Coords[z][3]>y) ) {
         if (z!=AREACHECK_Player-1) {
            // Is new in this area
            AREACHECK_Player=z+1;
            OnPlayerEnterArea(i,z+1);
         }
      } else {
         if (z==AREACHECK_Player-1) {
            // Player was in this Area
            OnPlayerLeaveArea(i,z+1);
            AREACHECK_Player=0;
         }
      }
   }
}   
}
}

Spawn Zóna
« Válasz #10 Dátum: 2012. december 29. - 11:46:17 »
0 Show voters
Valaki? :confused:

Nem elérhető Live

  • 507
    • Profil megtekintése
Spawn Zóna
« Válasz #11 Dátum: 2012. december 29. - 13:03:16 »
0 Show voters
Nem lehet,hogy elavult az include?
Vagy egyáltalán lehet ilyet csinálni?

Spawn Zóna
« Válasz #12 Dátum: 2012. december 29. - 13:07:19 »
0 Show voters
Idézetet írta: Live date=1356782596\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31582\" data-ipsquote-contentclass=\"forums_Topic
Nem lehet,hogy elavult az include?
 
Nem..
 

Vagy egyáltalán lehet ilyet csinálni?
 
[/quote]
Lehet igen..
Csak nem futnak le ezek:
 
OnPlayerEnterArea(playerid,areaid) { }
OnPlayerLeaveArea(playerid,areaid) { }

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal