
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
csskill
Rejestracja: 09.04.2010Aktualnie: Nieaktywny
Poza forum Ostatnio: 25.06.2010 20:09





Statystyki
- Grupa: Użytkownik
- Całość postów: 25
- Odwiedzin: 3 485
- Tytuł: Życzliwy
- Wiek: 45 lat
- Urodziny: Marzec 13, 1980
-
Płeć
Mężczyzna
0
Nowy
Narzędzia użytkownika
Moje posty
W temacie: Plugin generujący niewidzialne ściany. Pomocy!
20.06.2010 15:36
Plugin działa ściany są widoczne i nie można przez nie przejść tylko nie wiem w czym problem że cały system Linux takie pierdoły wywala serwer nie zużywa jakoś więcej ramu

W temacie: Plugin generujący niewidzialne ściany. Pomocy!
20.06.2010 10:12
entity_set_int(qq[a], EV_INT_solid, SOLID_BBOX)
@edit
Grr ... Nie zdazylem ~~ Można usunąć.
Albo ja aż tak ni ogarniam tych funkcji z engine albo jest coś nie tak

@edit2
Po całym dniu spędzonym na studiowaniu języka pawn konkretnie użycia funkcji z "engine" oraz tworzeniu modeli do cs udało mi się wymodzić następujący kod:
public wallCreate() { new Float:MinBox[3] new Float:MaxBox[3] new Float:PlayerOrigin[3] tmpWall[0] = create_entity("info_target") entity_set_string(tmpWall[0], EV_SZ_classname, "AMX_Wall_Maker") entity_set_model(tmpWall[0], "models/wall.mdl") MinBox[0] = 0.0 MinBox[1] = 0.0 MinBox[2] = 0.0 MaxBox[0] = 711.0 MaxBox[1] = 1.0 MaxBox[2] = 350.0 entity_set_vector(tmpWall[0], EV_VEC_mins, MinBox) entity_set_vector(tmpWall[0], EV_VEC_maxs, MaxBox) entity_set_vector(tmpWall[0], EV_VEC_absmin, MinBox) entity_set_vector(tmpWall[0], EV_VEC_absmax, MaxBox) PlayerOrigin[0] = -2919.0 PlayerOrigin[1] = 2108.0 PlayerOrigin[2] = -1015.5 entity_set_origin(tmpWall[0], PlayerOrigin) entity_set_int(tmpWall[0], EV_INT_solid, 2) entity_set_int(tmpWall[0], EV_INT_movetype, 4) tmpWall[1] = create_entity("info_target") entity_set_string(tmpWall[1], EV_SZ_classname, "AMX_Wall_Maker") entity_set_model(tmpWall[1], "models/wall.mdl") MinBox[0] = 0.0 MinBox[1] = 0.0 MinBox[2] = 0.0 MaxBox[0] = 1.0 MaxBox[1] = 766.0 MaxBox[2] = 1250.0 entity_set_vector(tmpWall[1], EV_VEC_mins, MinBox) entity_set_vector(tmpWall[1], EV_VEC_maxs, MaxBox) entity_set_vector(tmpWall[1], EV_VEC_absmin, MinBox) entity_set_vector(tmpWall[1], EV_VEC_absmax, MaxBox) PlayerOrigin[0] = -2208.0 PlayerOrigin[1] = 2110.0 PlayerOrigin[2] = -1015.5 entity_set_origin(tmpWall[1], PlayerOrigin) entity_set_int(tmpWall[1], EV_INT_solid, 2) entity_set_int(tmpWall[1], EV_INT_movetype, 4) tmpWall[2] = create_entity("info_target") entity_set_string(tmpWall[2], EV_SZ_classname, "AMX_Wall_Maker") entity_set_model(tmpWall[2], "models/wall.mdl") MinBox[0] = 0.0 MinBox[1] = 0.0 MinBox[2] = 0.0 MaxBox[0] = 711.0 MaxBox[1] = 1.0 MaxBox[2] = 350.0 entity_set_vector(tmpWall[2], EV_VEC_mins, MinBox) entity_set_vector(tmpWall[2], EV_VEC_maxs, MaxBox) entity_set_vector(tmpWall[2], EV_VEC_absmin, MinBox) entity_set_vector(tmpWall[2], EV_VEC_absmax, MaxBox) PlayerOrigin[0] = -2919.0 PlayerOrigin[1] = 2884.0 PlayerOrigin[2] = -1015.5 entity_set_origin(tmpWall[2], PlayerOrigin) entity_set_int(tmpWall[2], EV_INT_solid, 2) entity_set_int(tmpWall[2], EV_INT_movetype, 4) tmpWall[3] = create_entity("info_target") entity_set_string(tmpWall[3], EV_SZ_classname, "AMX_Wall_Maker") entity_set_model(tmpWall[3], "models/wall.mdl") MinBox[0] = 0.0 MinBox[1] = 0.0 MinBox[2] = 0.0 MaxBox[0] = 1.0 MaxBox[1] = 766.0 MaxBox[2] = 350.0 entity_set_vector(tmpWall[3], EV_VEC_mins, MinBox) entity_set_vector(tmpWall[3], EV_VEC_maxs, MaxBox) entity_set_vector(tmpWall[3], EV_VEC_absmin, MinBox) entity_set_vector(tmpWall[3], EV_VEC_absmax, MaxBox) PlayerOrigin[0] = -2919.0 PlayerOrigin[1] = 2108.0 PlayerOrigin[2] = -1015.5 entity_set_origin(tmpWall[3], PlayerOrigin) entity_set_int(tmpWall[3], EV_INT_solid, 2) entity_set_int(tmpWall[3], EV_INT_movetype, 4) return PLUGIN_HANDLED } public wall_clear() { for(new y; y <= 3; y++) remove_entity(tmpWall[y]) }
Niestety po dodaniu tych linijek do pluginu; system linux ("Debian 5.0") zaczął ciągle wywalać błąd: Naruszenia ochrony pamięci.
Kody błędu:
./hlds_run: line 321: 1537 Segmentation fault $HL_CMD
./hlds_run: line 321: 25751 Segmentation fault $HL_CMD
Plik hlds_run
#!/bin/sh # # Copyright (c) 2002, Valve LLC. All rights reserved. # # a wrapper script for the main hl dedicated server binary. # Performs auto-restarting of the server on crash. You can # extend this to log crashes and more. # # setup the libraries, local dir first! export LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH" init() { # Initialises the various variables # Set up the defaults GAME="valve" DEBUG=0 RESTART="yes" HL=./hlds_i486 HL_DETECT=1 TIMEOUT=10 # time to wait after a crash (in seconds) CRASH_DEBUG_MSG="email debug.log to [email protected]" GDB="gdb" # the gdb binary to run DEBUG_LOG="debug.log" PID_FILE="" STEAM="" STEAMERR="" SIGINT_ACTION="quit 0" # exit normally on sig int NO_TRAP=0 AUTO_UPDATE="" BETA_VERSION="" PARAMS=$* # Remove any old default pid files # Cant do this as they may be still running #rm -f hlds.*.pid # use the $FORCE environment variable if its set if test -n "$FORCE" ; then # Note: command line -binary will override this HL=$FORCE HL_DETECT=0 fi while test $# -gt 0; do case "$1" in "-game") GAME="$2" shift ;; "-debug") DEBUG=1 # Ensure that PID_FILE is set if test -z "$PID_FILE"; then PID_FILE="hlds.$$.pid" fi ;; "-norestart") RESTART="" ;; "-pidfile") PID_FILE="$2" shift ;; "-binary") HL="$2" HL_DETECT=0 shift ;; "-timeout") TIMEOUT="$2" shift ;; "-gdb") GDB="$2" shift ;; "-debuglog") DEBUG_LOG="$2" shift ;; "-autoupdate") AUTO_UPDATE="yes" STEAM="./steam" RESTART="yes" ;; "-steamerr") STEAMERR=1 ;; "-ignoresigint") SIGINT_ACTION="" ;; "-notrap") NO_TRAP=1 ;; "-beta") BETA_VERSION="$2" shift ;; "-help") # quit with syntax quit 2 ;; esac shift done # Ensure we have a game specified if test -z "$GAME"; then echo "Unable to determine game type from command line." quit 1 elif test ! -d "$GAME"; then echo "Invalid game type '$GAME' sepecified." quit 1 fi if test 0 -eq "$NO_TRAP"; then # Set up the int handler # N.B. Dont use SIGINT symbolic value # as its just INT under ksh trap "$SIGINT_ACTION" 2 fi # Only detect the CPU if it hasnt been set with # either environment or command line if test "$HL_DETECT" -eq 1; then detectcpu fi if test ! -f "$HL"; then echo "Half-life binary '$HL' not found, exiting" quit 1 elif test ! -x "$HL"; then # Could try chmod but dont know what we will be # chmoding so just fail. echo "Half-life binary '$HL' not executable, exiting" quit 1 fi # Setup debugging if test "$DEBUG" -eq 1; then #turn on core dumps :) (if possible) echo "Enabling debug mode" if test "`ulimit -c`" -eq 0 ; then ulimit -c 2000 fi GDB_TEST=`$GDB -v` if test -z "$GDB_TEST"; then echo "Please install gdb first." echo "goto http://www.gnu.org/software/gdb/ " DEBUG=0 # turn off debugging cause gdb isn't installed fi fi PID_IN_PARAMS="`echo $PARAMS | grep -e -pidfile`" if test -z "$PID_IN_PARAMS" && test -n "$PID_FILE"; then HL_CMD="$HL $PARAMS -pidfile $PID_FILE" else HL_CMD="$HL $PARAMS" fi } syntax () { # Prints script syntax echo "Syntax:" echo "$0 [-game <game>] [-debug] [-norestart] [-pidfile]" echo " [-binary [hlds_i486|hlds_i686|hlds_amd]" echo " [-timeout <number>] [-gdb <gdb>] [-autoupdate]" echo " [-steamerr] [-ignoresigint] [-beta <version>]" echo " [-debuglog <logname>]" echo "Params:" echo "-game <game> Specifies the <game> to run." echo "-debug Run debugging on failed servers if possible." echo "-debuglog <logname> Log debug output to this file." echo "-norestart Don't attempt to restart failed servers." echo "-pidfile <pidfile> Use the specified <pidfile> to store the server pid." echo "-binary <binary> Use the specified binary ( no auto detection )." echo "-timeout <number> Sleep for <number> seconds before restarting" echo " a failed server." echo "-gdb <gdb> Use <dbg> as the debugger of failed servers." echo "-steamerr Quit on steam update failure." echo "-beta <version> Make use of a beta version of this server from Steam" echo "-ignoresigint Ignore signal INT ( prevents CTRL+C quitting" echo " the script )." echo "-notrap Don't use trap. This prevents automatic" echo " removal of old lock files." echo "" echo "Note: All parameters specified as passed through to the server" echo "including any not listed." } debugcore () { # Debugs any core file if DEBUG is set and # the exitcode is none 0 exitcode=$1 if test $exitcode -ne 0; then if test -n "$DEBUG" ; then echo "bt" > debug.cmds; echo "info locals" >> debug.cmds; echo "info sharedlibrary" >> debug.cmds echo "info frame" >> debug.cmds; # works, but gives an error... must be last echo "----------------------------------------------" >> $DEBUG_LOG echo "CRASH: `date`" >> $DEBUG_LOG echo "Start Line: $HL_CMD" >> $DEBUG_LOG # check to see if a core was dumped if test -f core ; then CORE="core" elif test -f core.`cat $PID_FILE`; then CORE=core.`cat $PID_FILE` elif test -f "$HL.core" ; then CORE="$HL.core" fi if test -n "$CORE"; then $GDB $HL $CORE -x debug.cmds -batch >> $DEBUG_LOG fi echo "End of crash report" >> $DEBUG_LOG echo "----------------------------------------------" >> $DEBUG_LOG echo $CRASH_DEBUG_MSG rm debug.cmds else echo "Add \"-debug\" to the $0 command line to generate a debug.log to help with solving this problem" fi fi } detectcpu() { # Attempts to auto detect the CPU echo "Auto detecting CPU" if test "FreeBSD" = `uname`; then PROC="/usr/compat/linux/proc" else PROC="/proc" fi if test -e $PROC/cpuinfo; then CPU_VERSION="`grep "cpu family" $PROC/cpuinfo | cut -f2 -d":" | tr -d " " | uniq`"; if test $CPU_VERSION -lt 4; then echo "Error: hlds_l REQUIRES a 486 CPU or better"; quit 1 elif test $CPU_VERSION -ge 15; then # Core 2 or greater echo "Using AMD Optimised binary." HL=./hlds_amd elif test $CPU_VERSION -ge 6; then AMD="`grep AMD $PROC/cpuinfo`"; if test -n "$AMD"; then echo "Using AMD Optimised binary." HL=./hlds_amd else echo "Using Pentium II Optimised binary." # there is a CPU manufactured by VIA that # doesn't support some PII instructions... # detect this. VIACHIP=`grep CentaurHauls $PROC/cpuinfo` if test -z "$VIACHIP"; then HL=./hlds_i686 fi fi else echo "Using default binary." fi elif test "FreeBSD" = `uname`; then CPU="`grep 'CPU:' /var/run/dmesg.boot`" AMD="`echo $CPU |grep AMD`" K8="`echo $CPU |grep K8`" I686="`echo $CPU |grep 686`" if test -n "$AMD"; then echo "Using AMD Optimised binary." HL=./hlds_amd elif test -n "$K8" ; then echo "Using AMD Optimised binary." HL=./hlds_amd elif test -n "$I686" ; then echo "Using Pentium II Optimised binary." HL=./hlds_i686 else echo "Using default binary." fi else echo "Using default binary." fi } update() { updatesingle } updatesingle() { # Run the steam update # exits on failure if STEAMERR is set if test -n "$AUTO_UPDATE"; then if test -f "$STEAM"; then echo "Updating server using Steam." CMD="$STEAM -command update -game $GAME -dir ."; if test -n "$BETA_VERSION"; then CMD="$CMD -beta $BETA_VERSION"; fi $CMD if test $? -ne 0; then if test -n "$STEAMERR"; then echo "`date`: Steam Update failed, exiting." quit 1 else echo "`date`: Steam Update failed, ignoring." return 0 fi fi else if test -n "$STEAMERR"; then echo "Could not locate steam binary:$STEAM, exiting."; quit 1 else echo "Could not locate steam binary:$STEAM, ignoring."; return 0 fi fi fi return 1 } run() { # Runs the steam update and server # Loops if RESTART is set # Debugs if server failure is detected # Note: if RESTART is not set then # 1. DEBUG is set then the server is NOT exec'd # 2. DEBUG is not set the the server is exec'd if test -n "$RESTART" ; then echo "Auto-restarting the server on crash" #loop forever while true do # Update if needed update # Run the server $HL_CMD retval=$? if test $retval -eq 0 && test -z "$AUTO_UPDATE"; then break; # if 0 is returned then just quit fi debugcore $retval echo "`date`: Server restart in $TIMEOUT seconds" # don't thrash the hard disk if the server dies, wait a little sleep $TIMEOUT done # while true else # Update if needed update # Run the server if test "$DEBUG" -eq 0; then # debug not requested we can exec exec $HL_CMD else # debug requested we can't exec $HL_CMD debugcore $? fi fi } quit() { # Exits with the give error code, 1 # if none specified. # exit code 2 also prints syntax exitcode="$1" # default to failure if test -z "$exitcode"; then exitcode=1 fi case "$exitcode" in 0) echo "`date`: Server Quit" ;; 2) syntax ;; *) echo "`date`: Server Failed" ;; esac # Remove pid file if test -n "$PID_FILE" && test -f "$PID_FILE" ; then # The specified pid file rm -f $PID_FILE fi # reset SIGINT and then kill ourselves properly trap - 2 kill -2 $$ } # Initialise init $* # Run run # Quit normally quit 0
20 czerwiec 2010 - 11:12:
Odświeżam, jeśli temat zabrnął zbyt w tematykę HLDS proszę moderatora o przeniesienie ostatniego posta do odpowiedniego działu

Ale to jest raczej błąd ze złą optymalizacją części kodu

W temacie: Plugin generujący niewidzialne ściany. Pomocy!
18.06.2010 15:46
Ustaw odpowiedni SOLID
np.entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
Ok thx przetestuję i odezwę się

W temacie: Plugin generujący niewidzialne ściany. Pomocy!
18.06.2010 14:39
nie wiem czy wiez ale model to nie textura ktora sobie mozesz zapchac dany obszar ty chcesz jeden model rozciagnac a to jesli sie da to sie robi inaczej (pev_scale ale tego nie sprawdzalem)
Jak mogę ustawić żeby nie można było przejść przez tą ścianę?
W temacie: Plugin generujący niewidzialne ściany. Pomocy!
18.06.2010 13:13
hmm dobrze jest najpierw stworzyc entity uzywajac create_entity zapisac 4 id bytow do tablicy i im ustawiac dopiero wspolrzedne i wszystko
18 czerwiec 2010 - 14:08:
a co do min i max to jesli dobrze zrozumialem post R3X'a to moga byc one takie same dla kazdej sciany
Wiem że wygląda dobrze ale sam spójrz w załącznik:

To miała być cała ściana ... nie ma ani wysokości jaką ustawiłem ani szerokości chociarz grubośc 1J się zgadza <lol2>.
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Posty: csskill
- Regulamin