Jump to content

GodLesZ

Members
  • Posts

    186
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by GodLesZ

  1. the only problem with the script is it's not deleting the item when broken, anyone knows how to delete it? thank you.

    I didnt changed anything in Z3R0's modification and couldnt test it..

    		   	 // [Z3R0] - Added Item Check and Equipment Malfunctions
    
    			// Armor Check & Safeguard from Deletion, -1 From Refine Count (Retain All Cards)
    			if (.@part <= 2 && .@part >= 5) { // Armor Body Parts (Non Weapons)
    				if (getequiprefinerycnt(.@part) >= 7) { // Current Refine is 7 or Higher
    					//FailedRefItem .@part;
    
    					// Do Not know if there is an attribute function to get attribute
    					// [GodLesZ] Its possible.. fetch inventorylist, iterate them, compare all attributes and on match, you may access
    					//			 @inventorylist_attribute
    					set .@card[0] = getequipcardid(.@part, 0);
    					set .@card[1] = getequipcardid(.@part, 1);
    					set .@card[2] = getequipcardid(.@part, 2);
    					set .@card[3] = getequipcardid(.@part, 3);
    
    					///		<item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}
    					delitem2 getequipid(.@part),1,1,getequiprefinerycnt(.@part),0,getequipcardid(.@part, 0),getequipcardid(.@part, 1),getequipcardid(.@part, 2),getequipcardid(.@part, 3);
    					getitem2 getequipid(.@part),1,1,getequiprefinerycnt(.@part) - 1,0,getequipcardid(.@part, 0),getequipcardid(.@part, 1),getequipcardid(.@part, 2),getequipcardid(.@part, 3);
    				}
    			}
    
    			// Weapon Check & Safeguard from Deletion, -1 From Deletion, -1 From Refine Count (Retain All Cards)
    			if (.@part <= 4 && .@part >= 3) { // Weapons (Right and Left Hand)
    				if (getequiprefinerycnt(.@part) >= 8) { // Current Refine is 8 or Higher
    					//FailedRefItem .@part;
    
    					// Do Not know if there is an attribute function to get attribute
    					set .@card[0] = getequipcardid(.@part, 0);
    					set .@card[1] = getequipcardid(.@part, 1);
    					set .@card[2] = getequipcardid(.@part, 2);
    					set .@card[3] = getequipcardid(.@part, 3);
    
    					delitem2 getequipid(.@part),1,1,getequiprefinerycnt(.@part),0,getequipcardid(.@part, 0),getequipcardid(.@part, 1),getequipcardid(.@part, 2),getequipcardid(.@part, 3);
    					getitem2 getequipid(.@part),1,1,getequiprefinerycnt(.@part) - 1,0,getequipcardid(.@part, 0),getequipcardid(.@part, 1),getequipcardid(.@part, 2),getequipcardid(.@part, 3);
    				}
    			}   

    €dit:

    delitem2 getequipid(.@part),1,1,getequiprefinerycnt(.@part) - 1,0,.@card[0],.@card[1],.@card[2],.@card[3];

    Bad idea to delete refine -1 :)

  2. I like KeyWorld's idea but yes, its bad if you need the event for script events.

    I've build a small modification which should it be.

    This enables you to hold the old monster & monster_boss definitions AND add an additional flag (1/0) to show this mob while using convex mirror.

    The syntax is

    <map name>",<x>,<y>,"<name to show>",<mob id>,<amount>,<boss monster/normal monster>,<delay1>,<delay2>{,"<event label>"};

    The flag has to be 1 or 0.

    1 means convex mirror will show it, 0 otherwise. Boss mobs will still be shown even without this flag.

    This should be optionaly. Unfortunately I'm @work & cant test it :)

    Sorry 4 what.

    force_convex_display.diff

    • Upvote 2
  3. It's something like this :

    vec2 pos = size.xy*0.5 + off.xy + ( body_off2.xy - off2.xy );

    Without the explanation of the variable names i dont think this helps alot xD

    I assume size is the head sprite size after apply the scale from the action, right?

    off may be the world offset used to draw the sprite on a specified position.

    body_off2 seems to hold either the offset from the body action or another world offset/position. Or maybe the extraX/extraY in the action file?

    off2 had to be advised. :)

    Just to test some generic algorithms (i hate pseudocode) ..

    // assume the image is draw from the top-left corner
    // -- Input --
    // Contains the world position
    Vector2 worldPos;
    // Offset taken from the boady action file, most named as "extraX/extraY"
    Vector2 bodyExtraOffset;
    // Offset taken from the head action file
    Vector2 headOffset;
    // Offset taken from the head action file, most named as "extraX/extraY"
    Vector2 headExtraOffset;
    // Head image size, after apply mirror, rotation & scale modifer from action file
    Vector2 headImageSize;
    
    // --- Drawing ---
    // Calculate the final offset for drawing
    Vector2 finalHeadOffset = (worldPos + headOffset + bodyExtraOffset - headExtraOffset);
    // The offset in action files are relative to the image center, so normalize this to the top-left corner
    finalHeadOffset -= headImageSize * 0.5f;
    // Draw the image
    Draw(<headImage>, finalHeadOffset); 

    Hope it helps ôo

  4. I don't want to be opinionated, but just for example, see this jQuery bug: jQuery bug ticket #4622.

    Self-closing tag's arent a problem directly, but after coming together with a bunch of DOM content, IE may fail sometimes.

    I know that from personal experience. :)

    Btw, sorry for the off topic. I just wanted to mention it again, since many web developers are traveling around here too.

    As for the codebox feature, good job :)

  5. GodLesZ just tried to point out, that old browsers wont accept self-colsing tags (and all other HTML5 tags :)).

    (Don't think evrybody is using a modern browser; many companies still use IE6...)

    As for the HTML5 definition, KeyWorld is right. For some weired reasons my source view showed just a <!DOCTYPE> which isent valid.

    As for the lamness of IE (my researches found only problems on IE <8, no other browser), Kenpachi points it out. <3

  6. Hi.

    Can someone share a list with the position of sprites in relation to the body? (For example: head, hair, headgear, weapon, and so on...)

    I hope you understand what I'm asking for.... otherwise ask for details please. :)

    My PHP sprite class draws them some sort of dynamic:

       	 public function drawPart($pallette, $data, $sizeX, $sizeY, $offX, $offY, $round) {
    		$i = 0;
    		$x = (self::$IMAGE_WIDTH / 2);
    		$x -= ($round == true ? round($sizeX / 2) : $sizeX / 2);
    		$y = self::$IMAGE_BASEOFF;
    		if ($this->charOption == 32) {
    			$y += 10;
    		}
    		if ($this->charOption == 16) {
    			$y += 30;
    		}
    		$y -= ($round == true ? round($sizeY / 2) : $sizeY / 2);
    
    		while ($i < strlen($data)) {
    			$entry = $pallette[hexdec(substr($data, $i, 2))];
    			$pal = imageColorAllocateAlpha($this->ImageObj, $entry['r'], $entry['g'], $entry['b'], $entry['a']);
    	   	 imageSetPixel($this->ImageObj, $offX + $x, $offY + $y, $pal);
    			$i += 2;
    			$x++;
    			if (($i / 2) % $sizeX == 0) {
    				$y++;
    				$x = (self::$IMAGE_WIDTH / 2);
    				$x -= ($round == true ? round($sizeX / 2) : $sizeX / 2);
    			}
    		}
    	}

    While the parameter/arguments are something screwed up.. i never had time to clean this up, but her is a the whole drawing:

       	 public function drawHead($internal = false, $bodyextraX = 0, $bodyextraY = 0) {
    		if ($internal == false) {
    			$this->ImageObj = ImageCreateTrueColor(self::$IMAGE_WIDTH, self::$IMAGE_HEIGHT);
    			ImageSaveAlpha($this->ImageObj, true);
    			ImageFill($this->ImageObj, 0, 0, ImageColorAllocateAlpha($this->ImageObj, 255, 0, 255, 127));
    		}
    
    		// Head
    		$this->HEAD_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸Ó¸®Åë/'.$this->getSpriteSex().'/'.self::$HAIR_IDS[$this->charSex][$this->charHair].'_'.$this->getSpriteSex() . '.act');
    		$this->HEAD_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸Ó¸®Åë/'.$this->getSpriteSex().'/'.self::$HAIR_IDS[$this->charSex][$this->charHair].'_'.$this->getSpriteSex() . '.spr');
    		if (isset($this->charHair_color) && $this->charHair_color != 0) {
    			$this->HEAD_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'palette/¸Ó¸®/¸Ó¸®'.self::$HAIR_IDS[$this->charSex][$this->charHair].'_'.$this->getSpriteSex().'_'.$this->charHair_color.'.pal');
    		} else {
    			$this->HEAD_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸Ó¸®Åë/'.$this->getSpriteSex().'/'.self::$HAIR_IDS[$this->charSex][$this->charHair].'_'.$this->getSpriteSex().'.spr');
    		}
    
    		$headoffsetX = $this->HEAD_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetX'];
    		$headoffsetY = $this->HEAD_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetY'];
    		$headextraX = $this->HEAD_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraX'];
    		$headextraY = $this->HEAD_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraY'];
    
    		$newheadoffsetX = $headoffsetX + $bodyextraX - $headextraX;
    		$newheadoffsetY = $headoffsetY + $bodyextraY - $headextraY;
    
    		// draw head
    		$this->drawPart($this->HEAD_PAL, $this->getHeadSpr('Extracted_Data'), $this->getHeadSpr('Size_X'), $this->getHeadSpr('Size_Y'), $newheadoffsetX, $newheadoffsetY, false);
    
    		// Headgear
    		if ($this->charHead_top != 0) {
    			$this->HEADT_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_top) . '.act');
    			$this->HEADT_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_top) . '.spr');
    			$this->HEADT_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_top) . '.spr');
    			$head_topoffsetX = $this->HEADT_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetX'];
    			$head_topoffsetY = $this->HEADT_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetY'];
    			$head_topextraX = $this->HEADT_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraX'];
    			$head_topextraY = $this->HEADT_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraY'];
    			$newhead_topoffsetX = $head_topoffsetX + $bodyextraX - $head_topextraX;
    			$newhead_topoffsetY = $head_topoffsetY + $bodyextraY - $head_topextraY;
    		}
    		if ($this->charHead_mid != 0) {
    			$this->HEADM_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_mid) . '.act');
    			$this->HEADM_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_mid) . '.spr');
    			$this->HEADM_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_mid) . '.spr');
    			$head_midoffsetX = $this->HEADM_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetX'];
    			$head_midoffsetY = $this->HEADM_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetY'];
    			$head_midextraX = $this->HEADM_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraX'];
    			$head_midextraY = $this->HEADM_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraY'];
    			$newhead_midoffsetX = $head_midoffsetX + $bodyextraX - $head_midextraX;
    			$newhead_midoffsetY = $head_midoffsetY + $bodyextraY - $head_midextraY;
    		}
    		if ($this->charHead_bottom != 0) {
    			$this->HEADB_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_bottom) . '.act');
    			$this->HEADB_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_bottom) . '.spr');
    			$this->HEADB_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/¾Ç¼¼»Ç¸®/'.$this->getSpriteSex().'/'.$this->getSpriteSex().'_'.$this->getSpriteHeadName($this->charHead_bottom) . '.spr');
    			$head_bottomoffsetX = $this->HEADB_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetX'];
    			$head_bottomoffsetY = $this->HEADB_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetY'];
    			$head_bottomextraX = $this->HEADB_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraX'];
    			$head_bottomextraY = $this->HEADB_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraY'];
    			$newhead_bottomoffsetX = $head_bottomoffsetX + $bodyextraX - $head_bottomextraX;
    			$newhead_bottomoffsetY = $head_bottomoffsetY + $bodyextraY - $head_bottomextraY;
    		}
    
    		// draw head bottom
    		if ($this->charHead_bottom != 0) {
    			$this->drawPart($this->HEADB_PAL, $this->getHeadBSpr('Extracted_Data'), $this->getHeadBSpr('Size_X'), $this->getHeadBSpr('Size_Y'), $newhead_bottomoffsetX, $newhead_bottomoffsetY, true);
    		}
    		// draw head middle
    		if ($this->charHead_mid != 0) {
    			$this->drawPart($this->HEADM_PAL, $this->getHeadMSpr('Extracted_Data'), $this->getHeadMSpr('Size_X'), $this->getHeadMSpr('Size_Y'), $newhead_midoffsetX, $newhead_midoffsetY, true);
    		}
    		// draw head top
    		if ($this->charHead_top != 0) {
    			$this->drawPart($this->HEADT_PAL, $this->getHeadTSpr('Extracted_Data'), $this->getHeadTSpr('Size_X'), $this->getHeadTSpr('Size_Y'), $newhead_topoffsetX, $newhead_topoffsetY, false);
    		}
    
    
    		if ($internal == false) {
    			self::Trim($this->ImageObj);
    		}
    	}
    
    	public function drawCharacter() {
    		$this->ImageObj = ImageCreateTrueColor(self::$IMAGE_WIDTH, self::$IMAGE_HEIGHT);
    		ImageSaveAlpha($this->ImageObj, true);
    		ImageFill($this->ImageObj, 0, 0, ImageColorAllocateAlpha($this->ImageObj, 255, 0, 255, 127));
    
    
    		// Body
    		$this->BODY_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸öÅë/'.$this->getSpriteSex().'/'.$this->getSpriteBodyName().'_'.$this->getSpriteSex() . '.act');
    		$this->BODY_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸öÅë/'.$this->getSpriteSex().'/'.$this->getSpriteBodyName().'_'.$this->getSpriteSex() . '.spr');
    
    		// Shadow
    		$this->SHADOW_ACT = RagnarokActionFormat::structFromFile(self::$DATA_FOLDER . 'sprite/shadow.act');
    		$this->SHADOW_SPR = RagnarokSpriteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/shadow.spr');
    
    		$classpal_tab = array(
    			4011 => 10,
    			4009 => 8
    		);
    		if (isset($classpal_tab[$this->charClass]) && isset($this->charClothes_color) && $this->charClothes_color != 0) {
    			$this->BODY_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'palette/¸ö/'.$CLASS_SPRITES[$classpal_tab[$this->charClass]].'_'.$this->getSpriteSex().'_'.$this->charClothes_color.'.pal');
    		} else {
    			$this->BODY_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/Àΰ£Á·/¸öÅë/'.$this->getSpriteSex().'/'.$this->getSpriteBodyName().'_'.$this->getSpriteSex().'.spr');
    		}
    		$this->SHADOW_PAL = RagnarokPaletteFormat::structFromFile(self::$DATA_FOLDER . 'sprite/shadow.spr', true);
    
    		$bodyoffsetX = $this->BODY_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetX'];
    		$bodyoffsetY = $this->BODY_ACT['animations'][$this->getFrameNo()]['frames'][1]['subframes'][1]['offsetY'];
    		$bodyextraX = $this->BODY_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraX'];
    		$bodyextraY = $this->BODY_ACT['animations'][$this->getFrameNo()]['frames'][1]['extraY'];
    		$shadowoffsetX = $this->SHADOW_ACT['animations'][1]['frames'][1]['subframes'][1]['offsetX'];
    		$shadowoffsetY = $this->SHADOW_ACT['animations'][1]['frames'][1]['subframes'][1]['offsetY'];
    
    		$newshadowoffsetX = $shadowoffsetX;
    		$newshadowoffsetY = $shadowoffsetY;
    		$newbodyoffsetX = $bodyoffsetX;
    		$newbodyoffsetY = $bodyoffsetY;
    
    		// draw shadow
    		$this->drawPart($this->SHADOW_PAL, $this->getShadowSpr('Extracted_Data'), $this->getShadowSpr('Size_X'), $this->getShadowSpr('Size_Y'), $newshadowoffsetX, $newshadowoffsetY, true);
    		// draw body
    		$this->drawPart($this->BODY_PAL, $this->getBodySpr('Extracted_Data'), $this->getBodySpr('Size_X'), $this->getBodySpr('Size_Y'), $newbodyoffsetX, $newbodyoffsetY, true);
    		// draw head
    		$this->drawHead(true, $bodyextraX, $bodyextraY);
    
    
    		self::Trim($this->ImageObj);
    	}

    Its working for me but i dont know if there are some better ways for calulcating the positions.

    It assums that the offsetX and offsetY in action files are based on the image's center. As GDI draws based on the top-left corner, i subtract the half of width and height to get the top-left corner.

    The extraX and extraY in the body action file is used to offset the head sprite. This was just a test because i never read something about these 2 coordinates and after frustrating about a dynamic way for drawing a full character sprite, i tried them and yay, it worked!

    Hope it helps, even if its rly unclean :S

    €dit: spoiled x.x

  7. @GodLesZ,

    Seems interesting. I can create a dummy skill which would just be used for capturing mouse coordinates.

    Though I'm not exactly sure how I can use / convert clif_parse_UseSkillToPos() to actual x and y coordinates , if ever I'm successful on getting it.

    @KeyWorld,

    Yeah, mouse position would be vital, since this would be used mainly for a quest.

    I would be confined to using DIR compared to current player's position (getmapxy)

    to still somewhat make the NPC spawning (x,y) variable.

    I tried using your mod, it shows me this;

    script.c: In function 'buildin_areaeffect':
    script.c:17900: warning: implicit declaration of function 'clif_sendfakenpc'
    script.c:17901: error: incompatible type for argument 1 of 'clif_specialeffect_single'

    Also, would the correct entry below be;

    //Areaeffect
    BUILDIN_DEF(areaeffect, "iii"),

    PS: My post got answered in less than 2 hours. I prefer this new board. Lol.

    Edit:

    I changed this;

    clif_specialeffect_single( fk->bl, script_getnum(st,2), sd->fd );

    To this;

    clif_specialeffect_single( fk->bl.id, script_getnum(st,2), sd->fd );

    It compiled without error and 1 warning (shown above).

    But when I attach it to a script, my map server crashes. :)

    You need to declare clif_sendfakenpc() in clif.h first.

    Just paste the line

    void clif_sendfakenpc(struct map_session_data *sd, int npcid);

    above of

    #endif /* _CLIF_H_ */

    And clif_specialeffect_single() needs a pointer on the block_list struct, so the line should be

    clif_specialeffect_single(&fk->bl, script_getnum(st,2), sd->fd); 

    As for the mouse coordinates, I remeber to got some combinations to work, using a dummy skill called via itemSkill() script function after item usage.

    This was a ground spell and triggerd clif_parse_UseSkillToPos(), which i hijacked to check for my dummy skill and triggered an NPC after this.

    My old Revision is lost, so i cant provide some examples, Sorry =/

  8. @GodLesZ

    I didn't write this script and this is a paid add on for IPB 3.2.x I am suggesting this for easier storage of scripts like back in the days when ea have EASU (if im not mistaken).

    I know :)

    Just wanted to reaffirm the vulnerability ^^

    I would be happy to hear some adminstrator opinions about using such an addon.

  9. Okay I've searched through the source and I learned that there are limited ways to display client-side effects.

    It's either, have an NPC as the target object (specialeffect), or the attached player as the target object (specialeffect2).

    What I'm trying to do this time, is display a client-side effect, on a certain coordinate (x,y) on the map.

    The x and y coordinates will be supplied by the target coordinates of the player's mouse.

    Say I want to display effect number 900, on the ground, centered to that x,y position of my mouse.

    I'd just input areaeffect 900,xcoord,ycoord,duration(optional); on my script.

    Can I get the script.c code needed to get this working?

    Thanks.

    AFAIK the client needs a target to display the effect.

    Therefore you need an npc or player. Dont know about mobs/units, never tried it.

    But you could just spawn an npc, hide them and display an effect with the hidden npc as the target.

    AFAIK this works for certain minigames.

    For the mouse coordinates, you could try to use the itemSkill() script command and hope to receive a clif_parse_UseSkillToPos() packet, containing the coordinates of the target.

    If so, you will be able to move the npc to this coordinates and display the effect on it.

    If I'm right, i tried to catch the mouse coordinates sometimes before and had some trouble in it,

    But i cant remind me.. so let me know if youre lucked :)

  10. I'm totaly agree to ragnazorg, we need some guidlines and rules for spam prevention.

    This is one of the reasons why I'm unactive on the old eAthena board.. the spam and inactive moderators was unacceptable.

    and i think you were referring for me right? I`m just giving my opinion and you say that its already a spam?

    Glad to see you're able to paste a definition of spam.

    Just to show it ur self - a shortcut from your profil option "show content":

    post-330-0-15834000-1321352521_thumb.png

  11. Can someone fixed an html code with the codebox ? (because it's ugly !)

    Replace

    <input value="Select Text" onclick="selectCode(this); return false;" class="select_all_button" type="submit"></input>

    With

    <input value="Select Text" onclick="selectCode(this); return false;" class="select_all_button" type="submit"/>

    Since the content-type says, this page is a HTML, not XHTML, page, this would lead IE <8 and many other old browser for misshandling the page.

    HTML dosnt support self-colsing tags, event HTML5 dosnt (HTML5 re-implements optionaly end-.tags like HTML 3.2..).

    So its nicly to see, agree, but not valid :)

  12. Or the topic starter could just add "[solved]" to the topic title.

    This implements that every user knows that and do that.

    2 things which wont ever happen, unfortunately :)

    This is a moderator's job too, imo.

    And some small cronjob script could check every 24 hrs if a topic in some specified sections hasent any replies since >6 months => mark as solved.

    This would simplify the job of a support for searching any threads which needs his/her attention inseatd of searching all 51 pages for topics without a solving answer.

  13. @Z3RO

    Hahaha, it reminds me of one my codes with several classes to do something simple, and after discovered the easy way i was too lazy to clean up.

    [OT]

    Why doing its simple if you could write thound lines of code for printing hello world? :)

    Thats the way of a developer ;D

    @Topic: IMO its a good idea to store user scripts on eAthena site. This way a search extension could also search through this scripts and content management on the user site will be much better than yet.

    This way any contributor could manage his contributions on a single place instead of checking the downtimes of the free uploaders.

    But I'm with Protimus, such things are very dangerous and have to be checked 3 times more before releasing them.

  14. @topic

    +1

    But need some rules to determine with community:

    • Only relative to RO (yeah)
    • Not for pServer (yeah)
    • Allow paid services (don't know)
    • Allow hosting (don't know)
    • [insert here other suggestion]

    @Maki

    Don't know. In my case I prefer manage content in my website instead of having multiple pages to update each time.

    +1, I agree with every point, even if I'm against paid services.

    No developer or project team wants to refresh content on multiple sites. Its enough to take care of requests and answering questions on multiple websites.

  15. New Logo? Okay. But please, don't use one like this. This is a developer community (isn't it?) and no fantasy board.

    In my opinion the new logo should look clear and professinal instead of coltish and colorful.

    I didn't want to say this logo is a good one for a project like this.

    Just that a new logo would fit perfectly in the new forum. :)

    I'm with you - as for some of my rpg game projects, i would love to have a logo like this (*note's the member as a nice gfx artist :)*) but not for a project like this.

  16. <p>

    I'd suggest to create a "Rules" topic soon because there are already some backseat moderators...

    I love you <3

    I'm quite sure we both think for the same posts like this one, arent we? :)

    /@Topic: I vote for also for removing strictly posts as "could be closed" or "vote for close" and so on.. there should be a button "solved" for the topic starter and only after he pushing this button (or isnt active since w00tever) the topic should be closed.

    Edit: And i hate the editor.. everytime i use the quote, its screwed up using bbcode + html and killed my post..

  17. I made eathena a logo, more logo's coming soon. as well as team icons

    Nice, reminds me on final fantasy or some other rpg title screens.

    Unlike mentioned above I'm against the old logo.

    eAthena got a new forum, a new theme and needs a new, modern looking logo (IMO).

  18. Does the wiki just load really slow, or does it not work at all?  Sourceforge has some restrictions on their project web hosting (all outbound connections are blocked).  I think MediaWiki uses outbound connections to check InterWiki links and maybe other stuff too.  I'm still looking into it and probably going to disable all the Http::Get in MediaWiki.

    Or it might be the Vector skin.  Can you try these and see if they load any faster?

    ipbwiki_skin - http://eathena.sourc...in=ipbwiki_skin

    ipbwiki_skin_monobook - http://eathena.sourc...i_skin_monobook

    Even if I'm not lemongrass, i will try to provide some feedback.

    (Anything tested without any cookie or cache storage)

    Wiki with default skin: >5s

    Wiki with "ipbwiki_skin_monobook": <=3s (fastest, all the time)

    Wiki with "ipbwiki_skin": 7s (slowest, all the time)

    €dit: My post editor didnt have any WYSIWYG features (isnt this a IPB standard? Allways using

    WBB, so sorry for this question) and the bbcode is screwed/mixed up by html code.

    This is enables cross-site scripting vulnerabilities :/

    Anyways, good job! I like the idea of a new forum and hope to get a cleaner community.

×
×
  • Create New...